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

Wcf和接口作为参数共享

时间:2023-04-10 14:35:31 C#

Wcf和接口作为参数我有一个库,其中包含一些共享相同接口的实体。客户端和服务共享这个程序集。现在我想知道是否有一种方法可以将此接口类型作为我的服务契约中的参数,以便我可以对实现该接口的所有类使用相同的方法。实体本身用datacontract-attribute修饰,其成员用datamember属性修饰。是否可以?可能与NetDataContractSerializer一起使用?我知道我可以用基类(例如一些抽象类)和知识类型-属性来做到这一点,但我绝对更喜欢接口作为对象的标识符,因为它广泛用于客户端应用程序并将简化开发。谢谢,我在OperationContracts的实现中使用ServiceKnownType属性解决了这个问题。在告诉实现该接口的类为ServiceKnownType时可以使用该接口作为参数,这样所有实现该接口的类只要是可序列化的都可以使用。(查看JuvalL?wy的“ProgrammingWCFServices”,第100页)这在常规“mex”下肯定是不可能的。它可能与程序集共享,但我真的不推荐它-你正在与WCF作斗争:它会很脆弱,等等。当然,你总是可以在你的对象模型中屏蔽它-即而不是调用[OperationContract]方法直接将其抽象为隐藏WCF细节的包装器方法(可能使用与实际返回不同的对象进行数据传输)。[我刚刚阅读了您的回答,并意识到您专门询问服务方法的参数。如果它们仍然有用,我会留下我的评论。]我知道的项目,我知道我在线路的两边都有WCF,像这样:只包含共享接口的库,例如:namespaceSharedInterfaces{publicinterfaceICompositeType{boolBoolValue{get;放;}stringStringValue{得到;放;}}}WCF服务库,[DataContract](POCO)实现共享接口。[DataContract]publicclassCompositeType:ICompositeType{boolboolValue=true;stringstringValue="你好";[数据成员]publicboolBoolValue{get{returnboolValue;}设置{boolValue=值;}}[DataMember]publicstringStringValue{get{returnstringValue;}设置{字符串值=值;在服务客户端中,每个代理POCO都可以“强制”使用部分类来实现共享的、已部署的接口(如果svcutil正确地执行它,它就会运行),你将能够程序进入界面。其余的客户端代码:namespaceServiceClient.ServiceReference1{publicpartialclassCompositeType:ICompositeType{}}如果你想添加一些客户端可以使用的额外属性或方法(例如MVP或MVVM模式中的Presenter或ViewModel概念),那么这部分也很有用。以上就是C#学习教程的全部内容:Wcf和接口共享为参数。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: