Могу ли я переопределить имя для DataMember в производном классе? - PullRequest
0 голосов
/ 27 апреля 2019

Я должен реализовать какой-то протокол.Все xmls, которые мне нужно сериализовать (контракты WCF), всегда имеют два указанных раздела и один раздел «контент» - например:

Первый:

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

Второй:

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

Я хочу использовать некоторые дженерики, но затем появилась проблема с именем узла.Я нашел этот ответ: Сериализация DataMember (имя) проблема переопределения , но он не подходит для меня.

Код для моего подхода:

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

К сожалению, у меня всегда есть null для Content.

Мой вопрос: могу ли я установить атрибуты и отношения между классами для десериализации вышеупомянутого случая?Может быть, мне нужно создать отдельные классы для каждого типа контента?

...