【问题标题】:DataContract inheritance not known typeDataContract 继承未知类型
【发布时间】:2012-09-11 20:06:54
【问题描述】:

您好,我的数据合同具有继承性,但在使用服务时无法访问最后一个成员:

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; }
   }
}

所以在消费类中,我可以访问“标签”类型,但无法访问其“内容”属性。

【问题讨论】:

    标签: c# wcf datacontract


    【解决方案1】:

    您没有将该类的成员设置为 [DataMember]

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

    【讨论】:

      【解决方案2】:

      您无法访问Content 属性,因为它不是DataMember,所以它没有被序列化。添加[DataMember]属性

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

      来自 MSDN 关于 DataMemberAttribute 类

      当应用于类型的成员时,指定该成员是数据协定的一部分并且可由 DataContractSerializer 序列化。

      【讨论】:

      • 盯着看太久,没看到
      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多