我有一个 WCF 服务,必须将接口(interface)公开为数据契约(Contract)。该接口(interface)有两个派生类。
WCF 服务将返回派生类型的对象。客户端必须将其转换为派生类。这在客户端有可能吗?我的方法应该是什么。

最佳答案

如果您有派生类,则需要在数据契约(Contract)上“宣传”这些类:

[DataContract]
[KnownType(typeof(DerivedType1))]
[KnownType(typeof(DerivedType2))]
public class BaseType
{
   ......
}

或者您也可以在服务契约(Contract)中指定这些类型的关系:
[ServiceKnownType(typeof(DerivedType1))]
[ServiceKnownType(typeof(DerivedType2))]
[ServiceContract()]
public interface IService
{
    [OperationContract]
    BaseType GetItems();
}

查看 Data Contract Known TypesService Known Types 上的 MSDN 文档了解更多背景信息。

关于WCF 接口(interface)和派生类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2990557/

10-17 02:15