WCF - 从接口(interface)继承的 DataContract

标签 wcf interface datacontract

我有一个数据契约作为我的 WCF 接口(interface)的一部分,它继承自 IIdentity:

 [DataContract]
 public class AuthenticationIdentity : IIdentity
 {
    //implements IIdentity...
 }

该服务很好地返回了我的 AuthenticationIdentity 对象。然而,当我尝试在客户端上进行明显的转换时:

AuthenticationIdentity aId = client.GetID();
IIdentity id = aId;

我收到投诉称 AuthenticationIdentity 无法转换为 IIdentity。我尝试将 ServiceKnownTypes 添加到界面:

[ServiceKnownType(typeof(AuthenticationIdentity))]
[ServiceKnownType(typeof(IIdentity))]

但还是没有运气。有什么想法吗?

最佳答案

如果您控制线路的两侧(由于您想要转换为 IIdentity,所以看起来就像您所做的那样),您可以从共享程序集中引用您的 DataContract 。然后你可以使用svcutil to share the DataContracts服务和消费者之间。或者,如果您想完全删除 svcutil,您可以编写自己的代理来使用共享程序集。

关于WCF - 从接口(interface)继承的 DataContract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958838/

相关文章:

wcf - 如何使用 GET 请求将对象传递给 RESTful 服务?

json - WCF WebInvoke 方法 POST

javascript - 预检响应具有无效的 HTTP 状态代码 405

c# - 调用此接口(interface)时遇到问题

java - 使用相同的方法名称实现接口(interface)和抽象类导致通用名称冲突

c# - 应用 [DataContract] 反序列化 IEnumerable<T> 不起作用

.net - 使用 DataContractSerializer 在 WCF 中序列化和反序列化 XmlDocument

java - 我应该如何组织这段代码(OOP,接口(interface))

c# - DataContractJsonSerializer 生成哈希列表而不是哈希

.net - 与 XML 序列化的奇遇