我有一个 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 Types 或 Service Known Types 上的 MSDN 文档了解更多背景信息。
关于WCF 接口(interface)和派生类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2990557/