当前位置: 首页 > 编程语言 > C#

在WCF服务中传递接口?分享

时间:2023-04-11 02:07:36 C#

在WCF服务中传递接口?我正在尝试使用WCF服务,但在传递接口时遇到了问题。这有效:[ServiceContract]publicinterfaceIHomeService{[OperationContract]stringGetString();但它没有:[ServiceContract]publicinterfaceIHomeService{[OperationContract]IDeviceGetInterface();当我尝试编译客户端时,它在GetInterfaceMethodfailed处失败。我得到一个异常,说它不能将Object转换为IDevice。在客户端,IHomeService类使用字符串正确实现GetString作为返回类型,但GetInterface具有返回类型的对象。为什么不是IDevice?您需要告诉WCF序列化程序使用哪个类来序列化接口[ServiceKnownType(typeof(ConcreteDeviceType)]谢谢,当我像这样更改它时它可以工作:(TemperatureSensor))][ServiceKnownType(typeof(DeviceBase))]publicinterfaceIHomeService{[OperationContract]IDeviceGetInterface();}我也从这个网站得到了帮助:http://www.thoughtshapes.com/WCF/UsingInterfacesAsParameters.htm我最初尝试将接口传递给WCF方法,但使用此线程中提供的答案无法使代码工作。最后,我重构了我的代码并将抽象类传递给方法而不是接口。我通过使用基类的KnownType属性来做到这一点,例如上面是C#学习教程:在WCF服务中传递接口?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——[DataContract][KnownType(typeof(LoadTypeData))][KnownType(typeof(PlanReviewStatusData))]publicabstractclassRefEntityData:EntityData,IRefEntityData本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: