2012-09-11 79 views
0

大家好,我datacontract有繼承,但消費服務時的最後一個成員是不可訪問: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; } 
    } 
} 

所以在消費類我可以訪問類型「標籤」,但我可以」無法獲取其「內容」屬性。

回答

2

你沒有把類的該成員爲[數據成員]

[DataContract] 
    public class Labelling : LabellingSearch 
    { 
     [DataMember] 
     public string Content { get; set; } 
    } 
+0

衛生署! (捂臉) –

1

您不能訪問Content屬性,因爲它不是DataMember所以它不是序列化的。添加[DataMember]屬性

[DataMember] 
public string Content { get; set; } 

從MSDN約DataMemberAttribute類

當施加到的類型的部件,指定該部件是一個數據契約的一部分,並且是由所述的DataContractSerializer序列化的。

+0

它一直盯着太長,根本無法看到它 –