Как и в случае, почему json serializer не совместим с полиморфизмом? ,
У меня есть дочерний класс, наследующий от базового класса, который перезаписывает унаследованное свойство, используя новое ключевое слово.
Пример Ошибка:
Тип контракта данных "AEx" не сериализуется с помощью DataContractJsonSerializer, потому что элемент данных "Дата" дублируется в иерархии его типов.
Я знаю причину, почему это невозможно для сериализации.
Я хотел бы понять подход к решению этой проблемы, поскольку в то время я не смог реорганизовать этот фрагмент кода.
[DataContract]
class A {
[DataMember]
[I'm an attribute]
public DateTime Date {get;set;}
}
Codebase содержит дочерний класс, который хотел бы переписать существующее унаследованное свойство, чтобы наложить на него свой собственный набор атрибутов.
[DataContract]
class AEx : A {
[DataMember]
[I'm a different attribute]
new public DateTime Date {get;set;}
}
Я хотел бы иметь возможность де-сериализовать этот класс свободно для json.
Вы можете сделать Date в классе A виртуальным:
[DataContract]
class A
{
[DataMember]
[SomeAttribute]
public virtual DateTime Date {get; set;}
}
и переопределить его в классе B:
[DataContract]
class B : A
{
[DataMember]
[SomeOtherAttribute]
public override DateTime Date {get; set;}
}