XmlSerializer

时间:2016-05-31 10:19:56

标签: c# xml xml-serialization

是否可以创建在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]指定。

1 个答案:

答案 0 :(得分:0)

不,你不能修改XmlSerializer的工作方式。

在您的情况下,可能的可行解决方法是使用一些额外的工具,根据您的自定义属性在构建时更改您的代码(添加那些讨厌的[Propert/Field]ShouldSerialize成员) - 例如Post Sharp(据我所知,免费版本足以满足您的需求)。