Я экспериментирую с услугами WCF и сталкиваюсь с проблемой с передачей интерфейсов.Передача интерфейса в службе WCF?
Это работает:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
string GetString();
}
, но это не делает:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
При попытке компиляции клиента он терпит неудачу на методе GetInterface. Я получаю сообщение об исключении, что он не может преобразовать Object в IDevice.
На стороне клиента класс IHomeService корректно реализует GetString со строкой, так как это возвращаемый тип, но GetInterface имеет возвращаемый тип объекта. Почему это не IDevice?
Извините, но я не думаю, что понимаю. Предположим, я хочу, чтобы метод GetInterface возвращал два разных класса: SimpleDevice и AdvancedDevice, оба из которых реализуют интерфейс IDevice. Должен ли я установить ServiceKnownType для обоих типов? – 2008-11-21 21:13:28
При десериализации, как WCF знает, какой тип реализации IHomeService использовать? – Will 2008-11-21 21:15:12