我有一个返回List<BaseClass>
的服务方法,但有时我可能会在列表中发送DerivedClass : BaseClass
。
问题是我想通过发送信息。到目前为止,我有:
[DataContract]
public class BaseClass {
string Data { get; set; }
}
和
[DataContract(Name="BaseClass")]
public class DerivedClass : BaseClass {
string MoreData { get; set; }
}
但是当客户收到数据时,它都是BaseClass
类型。
答案 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; }
}