我有一个数据契约作为我的 WCF 接口的一部分,继承自 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 在服务和消费者之间共享 DataContracts。或者,如果您想完全删除 svcutil,您可以编写自己的代理来使用共享程序集。