我可以在派生类中“覆盖” DataMember的名称吗?

时间:2019-04-27 14:16:46

标签: c# xml datacontractserializer

我必须实现一些协议。我需要序列化的所有xml(WCF合同)始终具有两个指定的部分和一个“内容”部分-例如:

第一:

<X>
 <Y>
  <Content1/>
 </Y>
</X>

第二:

<X>
  <Y>
   <Content2/>
  </Y>
</X>

我想使用一些泛型,但随后出现了节点名称问题。 我找到了这个答案:Serialization DataMember (name) override issue,但它不适合我。

我的方法的代码:

public class X<TContent>
{
     [DataMember]
     public Y<TContent> yName { get; set; }
}

public class Y<TContent>
{
     [DataMember]
     public virtual TContent Content { get; set; }
}

然后只有几个“ Content”类,如:

public sealed class Content1Class: Y<Content1>
{
    [DataMember(Name = nameof(Content1))]
    public override Content1 Content { get; set; }
}

不幸的是,我的内容始终为空。

我的问题是: 我可以设置类之间的属性和关系来反序列化上述情况吗?也许我必须为每种内容类型创建单独的类?

0 个答案:

没有答案