Necesito devolver un tipo complejo de un servicio web y he construido la clase MyComplexType que implementa la interfaz IMyComplexType. Ahora, en mi servicio web que tengo un método que debe devolver un objeto que implementa IMyComplexType así:¿Es posible devolver interfaces desde .net webservices o solo se pueden devolver clases concretas?
[WebMethod]
public IMyComplexType GetMyComplexType()
{
IMyComplexType myCt = new MyComplexType();
...
return myCt;
}
Todo compila bien, pero cuando corro el servicio web se lanza una excepción de la siguiente manera:
System.NotSupportedException: Cannot serialize interface MyWebService.IMyComplexType.
Es esto por diseño o me estoy perdiendo algo. ¿Puedo decorar mi clase o interfaz de alguna manera para permitir esto? ¿Tengo que eliminar todas las interfaces y solo trabajar con clases base concretas y tal vez abstractas para poder hacer esto con los servicios web .net?
Editar:
esta es la interfaz que estoy tratando de serializar:
public interface ICustomer
{
long Id {get; set;}
string Name {get; set;}
string EmailAddress {get; set;}
}
Esto a su vez requiere que implemente la interfaz ISerializable en todas mis clases, mientras que esperaba poder serializar sin tener que hacer eso. Solo necesito las propiedades públicas. Eliminar las interfaces y simplemente usar las clases concretas funciona bien, pero ¿es una mejor práctica? – Fadeproof