我正在读取.xml文件,并且根据元素,可能会有也可能没有依赖项标记。
[XmlArray("dependencies"), XmlArrayItem("dependency")]
public List<string> Dependencies { get; set; }
当没有&lt;依赖项&gt;,我希望列表设置为null,我试图用
List<string> Dependencies = null;
但是,当我反序列化我的xml时,依赖关系显示为Count = 0。我希望它显示为设置为null,所以当我序列化它时,我不会得到空的&lt;依赖性/&gt;在我的xml文件中标记为无用的混乱。这用一个字符串很精彩,我只是将其设置为= null,但是对于列表,这在某种程度上无法解决。
答案 0 :(得分:3)
在XmlArray属性
上使用IsNullable属性[System.Xml.Serialization.XmlArray("dependencies", IsNullable=true)]
副作用是您的xsi:nill=true
元素会获得dependencies
属性,但如果您的架构支持它,则价格很小。
答案 1 :(得分:0)
尝试将IsNullable属性设置为true:
[XmlArray("dependencies"), XmlArrayItem("dependency"), IsNullable = true]
public List<string> Dependencies { get; set; }
答案 2 :(得分:0)
见similar question。这里的建议是使用不带参数的[XmlArray]。 IsNullable不会为您提供所需的干净XML。
答案 3 :(得分:0)
如果使用ShouldSerialize为方法添加前缀并将返回类型设置为bool,则可以覆盖xmlserializer是否会序列化当前属性。在这种情况下,如果计数为零,则不会序列化依赖项。
[XmlArray("dependencies"), XmlArrayItem("dependency")]
public List<string> Dependencies { get; set; }
public bool ShouldSerializeDependencies()
{
if (Dependencies != null && Dependencies.Count > 0)
{
return true;
}
else
{
return false;
}
}