我有一个具有许多 Nullable<T> 属性的类,我希望将其序列化为 XML 作为属性。这显然是一个禁忌,因为它们被认为是“复杂类型”。因此,我实现了 *Specified 模式,在其中创建了一个附加的 *Value 和 *Specified 属性,如下所示:
[Xml忽略] 公共诠释?年龄 { 得到{返回这个年龄;} 设置 { this.age = value; } } [XmlAttribute("年龄")] 公共 int AgeValue { 得到 { 返回 this.age.Value; } 设置 { this.age = value; } } [Xml忽略] 公共布尔年龄值指定 { 得到 { 返回 this.age.HasValue; } }
效果很好 - 如果 'Age' 属性有一个值,它会被序列化为一个属性。如果它没有值,则不会序列化。
问题是,正如我所提到的,我的班级中有很多 Nullable-s,这种模式只会让事情变得混乱和难以管理。
我希望有一种方法可以使 Nullable 对 XmlSerializer 更加友好。或者,如果做不到这一点,一种创建 Nullable 替换的方法是。
有谁知道我该怎么做?
谢谢。