Я использую DataContractJsonSerializer и у меня есть проблема с именем DataMember.
Я создал базовый класс и несколько производных классов.Мне нужны производные классы, потому что у меня разные строки json.Я хочу десериализовать строки json, и поэтому мне нужны разные имена для камер данных.Я пытаюсь изменить имя DataMember, как показано в следующем примере:
Базовый класс:
[DataContract]
public abstract class BaseClass
{
[DataMember]
public virtual string FirstMethod { get; protected set; }
}
Производный класс:
[DataContract]
[KnownType(typeof(BaseAccess))]
public class DerivedClass
{
[DataMember(Name="first_method")]
public virtual string FirstMethod { get; protected set; }
}
Проблема заключается в том, что при использовании производногоclass сериализация, кажется, игнорирует данное имя DataMember.Поэтому, когда я десериализую с типом DerivedClass, кажется, что сериализация происходит с именем «FirstMethod» (из базового класса) вместо «first_method» (из производного класса).Можно ли использовать имя DataMember производного класса (которое отличается для нескольких производных классов в моей ситуации).
Другой вопрос.Я нашел примеры с KnownType, добавленным в базовый класс и добавленным в производный класс.Мне кажется логичным делать это на производном классе (особенно для наследования).Что правильно?