C# 使用DataContractSerializer处理多态性
与中国的情况类似, 我有一个子类继承自基类,该基类使用 新关键字 抛出的错误示例: 数据协定类型“AEx”无法使用DataContractJsonSerializer序列化,因为数据成员“Date”在其类型层次结构中重复 我知道这无法反序列化/序列化的原因 我想了解一种解决这个问题的方法,因为在当时,我无法专门重构这段代码C# 使用DataContractSerializer处理多态性,c#,json,polymorphism,datacontractserializer,C#,Json,Polymorphism,Datacontractserializer,与中国的情况类似, 我有一个子类继承自基类,该基类使用 新关键字 抛出的错误示例: 数据协定类型“AEx”无法使用DataContractJsonSerializer序列化,因为数据成员“Date”在其类型层次结构中重复 我知道这无法反序列化/序列化的原因 我想了解一种解决这个问题的方法,因为在当时,我无法专门重构这段代码 [DataContract] class A { [DataMember] [I'm an attribute] public DateTime D
[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;}
}
我希望能够将这个类自由地反序列化为frojson 您可以将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;}
}
使用json.net。您也可以将其配置为序列化类型信息。我现在来看看。谢谢。我不能改变现有的等级,那艘船已经开航了=(我明白了。我想,你只是不允许更改类的结构。在这种情况下,我担心你将不得不切换到另一个.NET Json序列化程序,因为DataContractJsonSerializer对此非常严格。