Imaginemos que tenemos que crear un servicio Web para una tarea determinada (para simplificar, digamos, realziar una suma), y dicha tarea debe trabajar con diferentes tipos de datos.

En una clase .NET podemos crear versiones sobrecargadas de un método cada una de las cuales tomará el tipo de datos pertinente, siendo el propio compilador el que llamará a la versión sobrecargada que convenga encada caso.

En el caso de un servicio Web a priori puede parecer que no seremos capaces de obtener el mismo efecto, ya que no podemos exponer dos métodos Web con el mismo nombre. Sin embargo existe un atributo llamado MessageName que permite conseguir un efecto similar.

MessageName se utiliza para asignar alias a los métodos Web que definamos, de forma que podemos identificar de manera única a cada uno de ellos, incluso aunque el nombre asignado a la función sea el mismo. De este modo, si queremos exponer como servicio Web una clase que posee un método con varias sobrecargas sólo tenemos que emplear este atributo asignándole un identificador diferente a cada una. Por ejemplo (sacado de la propia documentación de la plataforma .NET):

 public class Calculadora : WebService {
    // El valor de MessageName coge como valor por defect el del método, en este caso 'Sumar'
    [WebMethod]
    public int Sumar(int i, int j) {
       return i + j;
    }  
    [WebMethod(MessageName="Sumar2")]
    public int Add(int i, int j, int k) {
       return i + j + k;
    }  
 }

Con esto conseguimos el efecto de métodos Web sobrecargados sin demasiado esfuerzo.

💪🏻 ¿Este post te ha ayudado?, ¿has aprendido algo nuevo?
Pues NO te pido que me invites a un café... Te pido algo más fácil y mucho mejor