XML序列化使用空数组而不是NULL

6
我有一个属性。
 [XmlElement]
 public string[] Emails { get; set; }

该属性在构造函数中初始化为string[0]。

如果我对此对象进行XML序列化和反序列化,该属性将为NULL。

如何告诉XML序列化程序使用空数组而不是NULL来表示该属性?


1
你可以始终实现 {get; set;},因此如果设置为 null(或尝试在 getter 中返回 null),它将使用空数组。编辑:只需确保在 get 上进行检查时,还要将空数组存储在后备字段中,而不仅仅是返回新实例。 - Chris Sinclair
@ChrisSinclair:我有数百个这样的属性,有没有不需要手动添加属性的方法? - Herman Schoenfeld
据我所知没有这样的功能。您可以创建一个单独的实用类,通过反射找到所有为null的数组(和集合?),并将它们设置为适当的空集合的新实例。在调用中央反序列化方法时,让它通过此实用程序运行。 - Chris Sinclair
1个回答

8

五年后... :) 使用List<>替换Array对我有帮助。

[XmlElement (IsNullable = false)]
public List<string> Emails {get;set;}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接