我正在尝试使用WCF服务,并且遇到了传递接口的问题.
这有效:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
string GetString();
}
Run Code Online (Sandbox Code Playgroud)
但这不是:
[ServiceContract]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译客户端时,它在GetInterface方法上失败.我得到一个异常,说它无法将Object转换为IDevice.
在客户端上,IHomeService类正确地使用字符串实现GetString,因为它是返回类型,但GetInterface具有返回类型的对象.为什么不是IDevice?
Bri*_*sio 20
您需要告诉WCF序列化程序使用哪个类来序列化接口
[ServiceKnownType(typeof(ConcreteDeviceType)]
Run Code Online (Sandbox Code Playgroud)
谢谢,当我改变它时,它的工作原理如下:
[ServiceContract]
[ServiceKnownType(typeof(PhotoCamera))]
[ServiceKnownType(typeof(TemperatureSensor))]
[ServiceKnownType(typeof(DeviceBase))]
public interface IHomeService
{
[OperationContract]
IDevice GetInterface();
}
Run Code Online (Sandbox Code Playgroud)
我也从这个网站得到了帮助:http://www.thoughtshapes.com/WCF/UsingInterfacesAsParameters.htm
| 归档时间: |
|
| 查看次数: |
14301 次 |
| 最近记录: |