如何通过API(WCF).NET发送派生类型列表

时间:2017-01-19 17:23:11

标签: c# wcf

我有一个返回List<BaseClass>的服务方法,但有时我可能会在列表中发送DerivedClass : BaseClass

问题是我想通过发送信息。到目前为止,我有:

[DataContract]
public class BaseClass {
    string Data { get; set; }
}

[DataContract(Name="BaseClass")]
public class DerivedClass : BaseClass {
    string MoreData { get; set; }
}

但是当客户收到数据时,它都是BaseClass类型。

2 个答案:

答案 0 :(得分:1)

以下内容应解决您的问题:

[DataContract]
[KnownType(typeof(DerivedClass))]
public class BaseClass {
    string Data { get; set; }
}

public class DerivedClass : BaseClass
{
}

答案 1 :(得分:1)

您应该将KnownType属性添加到BaseClass并更改Name DerivedClass或删除它:

[DataContract]
[KnownType(typeof(DerivedClass))]
public class BaseClass 
{
    string Data { get; set; }
}

[DataContract(Name="DerivedType")]
public class DerivedClass : BaseClass 
{
    string MoreData { get; set; }
}

KnownTypes