我有一个数据契约作为我的 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/