使用DataContractSerializer处理多态性
本文关键字:多态性 处理 DataContractSerializer 使用 | 更新日期: 2023-09-27 18:05:26
类似于为什么json序列化器不符合多态性?
我有一个继承自基类的子类,它使用新的关键字。
抛出的错误示例:
数据契约类型'AEx'不能用DataContractJsonSerializer序列化,因为数据成员'Date'在它的类型层次结构中是重复的。
我知道为什么不能反/序列化的原因。
我想了解如何解决这个问题的方法,因为当时,我无法特别重构那段代码。
[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。
你可以把A类中的Date设为虚的:
[DataContract]
class A
{
[DataMember]
[SomeAttribute]
public virtual DateTime Date {get; set;}
}
并在类B中重写它:
[DataContract]
class B : A
{
[DataMember]
[SomeOtherAttribute]
public override DateTime Date {get; set;}
}