在处理导出流程时,我有几个 XML 元素代表相同的事物,但名称不同。我无法更改这些名称,因为它们是由其他软件定义的。
我需要这样的东西:
<class1>
<MY_FIELD></MY_FIELD>
</class1>
<class2>
<my_field></my_field>
</class2>
由于需要对两个字段进行的处理是相同的,我想创建一个包含它的抽象类。
现在,这就是我所拥有的:
public abstract class MyAbstract
{
[XmlAttribute("MY_FIELD")]
public MyField {get;set;}
}
[Serializable]
public class Class1 : MyAbstract
{
}
[Serializable]
public class Class2 : MyAbstract
{
}
有没有办法XmlAttribute
在最终类(class1
和class2
)上指定不同的,以便我可以设置属性MyField
?
编辑:我正在尝试使用XmlAttributeOverrides
,这似乎可以满足我的要求,但我无法使其工作。我不知道我错过了什么。
var myType = typeof(Class1);
var overrides = new XmlAttributeOverrides();
var attrs = new XmlAttributes
{
XmlAttribute = new XmlAttributeAttribute("test")
};
overrides.Add(myType, "MyField",attrs);
对于序列化器
var serializer = new XmlSerializer(myType, overrides);
Edit2:最后我删除了抽象类上的属性,并在每个类上添加了一个 getter 用于序列化目的。这很糟糕,但我仍然希望有人能给我一个合适的选择。