Я использую DataContractJsonSerializer и имею проблему с именем DataMember.
Я сделал базовый класс и несколько производных классов. Мне нужны производные классы, потому что у меня разные строки json. Я хочу десериализовать строки json и, следовательно, вам нужны разные имена для данных. Я пытаюсь изменить имя DataMember, как в следующем примере:
BaseClass:
[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; }
}
Проблема в том, что когда я использую производный класс, сериализация, похоже, игнорирует данное имя DataMember. Поэтому, когда я deserialize с типом DerivedClass, сериализация, похоже, имеет место с именем "FirstMethod" (базового класса) вместо "first_method" (производного класса). Можно ли использовать имя DataMember производного класса (что отличается для нескольких производных классов в моей ситуации).
Другой вопрос. Я нашел примеры с KnownType, добавленные в базовый класс и добавленные в производный класс. Кажется логичным для меня сделать это на производном классе (особенно для проблем наследования). Что правильно?