WCF - 从接口继承的 DataContract

问题描述 投票:0回答:1

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

但仍然没有运气。有什么想法吗?

wcf interface datacontract
1个回答
3
投票

如果您控制线的两侧(看起来就像您所做的那样,因为您想要投射到

IIdentity
),则可以从共享程序集中引用您的
DataContract
。然后您可以使用 svcutil 在服务和消费者之间共享 DataContracts。或者,如果您想完全删除 svcutil,您可以编写自己的代理来使用共享程序集。

© www.soinside.com 2019 - 2024. All rights reserved.