2

我有一个数据合同作为我的 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))]

但仍然没有运气。有任何想法吗?

4

1 回答 1

3

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

于 2010-06-02T17:23:24.423 回答