我正在使用 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; }
}
问题是当我使用派生类时,序列化似乎忽略了给定的 DataMember 名称。因此,当我使用 DerivedClass 类型反序列化时,序列化似乎使用名称“FirstMethod”(基类)而不是“first_method”(派生类)进行。是否可以使用派生类的 DataMember 名称(在我的情况下,这对于几个派生类是不同的)。
另一个问题。我发现在基类上添加了 KnownType 并在派生类上添加了示例。在派生类上做这件事对我来说似乎是逻辑(尤其是对于继承问题)。什么是正确的?