是否可以创建在XmlSerializer上强加新行为的新XmlAttributes?
示例,想象一下我想要一个XmlAttrbute,它指示如果一个类的给定字段/属性的值为null,那么它是否要被序列化。
我知道,对于这个例子,你可以使用[Propert / Field] ShouldSerialize或[Property / Field] Specified甚至XmlAttributeOverrides,但这种方法可能意味着大量的工作。
使用反编译软件我去了System.Xml.Serialization dll并打开了像XmlIgnoreAttribute或XmlElementAttribute这样的类。
在XmlElementAttribute中,我找到了以下内容
public bool IsNullable {
get { return nullable; }
set {
nullable = value;
nullableSpecified = true;
}
}
但不幸的是内部的nullableSpecified属性:(我无法看到它是否会产生相同的效果[Metal / Field] shouldSerialize或[Property / Field]指定。
答案 0 :(得分:0)
不,你不能修改XmlSerializer的工作方式。
在您的情况下,可能的可行解决方法是使用一些额外的工具,根据您的自定义属性在构建时更改您的代码(添加那些讨厌的[Propert/Field]ShouldSerialize
成员) - 例如Post Sharp(据我所知,免费版本足以满足您的需求)。