Estoy experimentando con WCF Services, y me he encontrado con un problema al pasar las interfaces.¿Interfaz de paso en un servicio de WCF?
Esto funciona:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
string GetString();
}
pero esto no es así:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
Cuando intento compilar el cliente se produce un error en el método GetInterface. Recibo una excepción que dice que no puede convertir Object a IDevice.
En el lado del cliente, la clase IHomeService implementa correctamente GetString con una cadena, ya que es returntype, pero GetInterface tiene un tipo de objeto retornado. ¿Por qué no es IDevice?
Lo siento, pero creo que no entiendo. Digamos que quiero que el método GetInterface devuelva dos clases diferentes, SimpleDevice y AdvancedDevice, ambas implementan la interfaz IDevice. ¿Debo entonces configurar ServiceKnownType para ambos tipos? –
Al deserializar, ¿cómo sabe WCF qué tipo de implementación de IHomeService usar? – Will
Sí, creo que lo tienes. Le está diciendo a WCF los posibles tipos que implementan la interfaz. Puede pasar cualquier tipo, siempre que WCF sepa que estos tipos conocidos implementan la interfaz y que sean serializables. –