我的datacontract有继承,但在使用服务时无法访问最后一个成员:
namespace Services.SearchService
{
[DataContract]
[KnownType(typeof(LabellingSearch))]
public class SearchResult
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public DateTime Modified { get; set; }
}
/// <summary>
/// Specialist Search Result for Labelling Content Data
/// </summary>
[DataContract]
[KnownType(typeof(Labelling))]
public class LabellingSearch : SearchResult
{
[DataMember]
public string Region { get; set; }
[DataMember]
public string Country { get; set; }
[DataMember]
public string LabelSummary { get; set; }
}
/// <summary>
/// Full Labelling Content Data
/// </summary>
[DataContract]
public class Labelling : LabellingSearch
{
public string Content { get; set; }
}
}
所以在消费类中,我可以访问“标签”类型,但我无法获取其“内容”属性。
答案 0 :(得分:2)
您没有将该成员列为 [DataMember]
[DataContract]
public class Labelling : LabellingSearch
{
[DataMember]
public string Content { get; set; }
}
答案 1 :(得分:1)
您无法访问Content
属性,因为它不是DataMember
所以它没有被序列化。添加[DataMember]
属性
[DataMember]
public string Content { get; set; }
在MSDN上关于 DataMemberAttribute类:
当应用于类型的成员时,指定该成员是数据协定的一部分,并且可由DataContractSerializer序列化。