Wcf 方法接口作为参数在客户端被视为对象
Posted
技术标签:
【中文标题】Wcf 方法接口作为参数在客户端被视为对象【英文标题】:Wcf method interface as parameter seen as object on clientside 【发布时间】:2020-02-19 19:01:54 【问题描述】:我在 OperationContract 中使用接口作为输入参数。但是当我在客户端生成代理类时,客户端方法被视为:GetDat(object value) 而不是 GetData(IMyObj value)
-
服务接口
-
服务类
-
接口
-
数据合约
注意:*** 上有很多关于接口参数和 wcf 的类似问题。但他们都告诉使用 ServiceKnownType 属性和 KnownTypeAttribute(我这样做了)。但是它仍然给客户端的调用方法一个对象作为参数类型而不是我的接口类型。
【问题讨论】:
【参考方案1】:对于遇到同样问题的其他人。我在https://social.msdn.microsoft.com/Forums/vstudio/en-US/2c52251b-af7f-4529-a2ac-14418ca4b19d/wcf-service-reference-does-not-add-the-interface-definition-of-a-datacontract-of-a-class?forum=wcf@
上从 Ladislav 那里找到了这个答案你好,
你不能那样做。 DataContract 表示数据的定义 在客户端和服务之间传输。这个定义被转换 到 XSD 中,它描述了交换的 XML 格式(序列化数据 合同对象)。 XML 只能传输数据而不是逻辑,它不能 传输有关数据合约实施的任何信息 = 否 继承和没有接口实现。如果你想使用 客户端上带有接口的数据合同,您必须共享该数据 组装合同(不仅是接口)并在 生成服务代理时的客户端。
最好的问候,拉迪斯拉夫
【讨论】:
以上是关于Wcf 方法接口作为参数在客户端被视为对象的主要内容,如果未能解决你的问题,请参考以下文章