c# - sobreescritura - sobrecarga de metodos en programacion orientada a objetos
¿Por qué la sobrecarga de métodos no está permitida en WCF? (2)
En pocas palabras, la razón por la que no se pueden sobrecargar los métodos tiene que ver con el hecho de que WSDL no admite los mismos conceptos de sobrecarga presentes dentro de C #. La siguiente publicación proporciona detalles sobre por qué esto no es posible.
http://jeffbarnes.net/blog/post/2006/09/21/Overloading-Methods-in-WCF.aspx
Para evitar el problema, puede especificar explícitamente la propiedad Name
de OperationContract
.
[ServiceContract]
public interface MyService
{
[OperationContract(Name="SumUsingInt")]
int Sum(int x, int y);
[OperationContract(Name="SumUsingDouble")]
int Sum(double x, double y);
}
Supongamos que se trata de un ServiceContract
[ServiceContract]
public interface MyService
{
[OperationContract]
int Sum(int x, int y);
[OperationContract]
int Sum(double x, double y);
}
La sobrecarga de métodos está permitida en C #, pero WCF no le permite sobrecargar los operation contracts
El programa de alojamiento arrojará una InvalidOperationException
mientras se aloja.
Porque al invocar a través de HTTP / SOAP, tener el mismo nombre de método en su contrato significaría que no hay forma de determinar qué método particular va a invocar el cliente.
Recuerde que al invocar métodos web sobre http, los argumentos son opcionales y se inicializan con valores predeterminados si faltan. Esto significa que la invocación de ambos métodos podría verse exactamente de la misma manera a través de HTTP / SOAP.