我想知道是否可以覆盖一个类的成员,但也可以序列化这个属性,就好像它是“原始”属性一样。
为了清楚我的意思,我向您展示了一小段代码:
class Foo {
[System.Xml.Serialization.XmlElementAttribute(Order = 2)]
public string area;
}
class Bar : Foo {
[System.Xml.Serialization.XmlElementAttribute(ElementName = "totalArea", Order = 2)]
public new area{
get{return "a new implementation of area";}
set{}
}
}
class Program {
public static void main(...) {
Foo foo = new Bar();
foo.area = "whatever";
}
}
所以我想要的是给属性一个新的名字。Ofc 我可以简单地将一个新属性 totalArea 添加到 Bar 的类定义中,但这会使成员数量增加一倍,如果您处理更大的对象,这可能会变得令人困惑。此外,由于我不确定给定对象是哪个确切的子类,我不知道它是否支持这个额外属性“totalArea”。所以我想简单地使用“区域”属性,序列化程序决定使用哪个属性定义。
这可能吗?