有没有办法避免XmlSerializer在反序列化时不初始化null属性?

Car*_*rlo 10 .net xmlserializer

我有这门课:

public class MySerializableClass
{
    public List<MyObject> MyList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果MySerializableClass被序列化时MyList为null,那么当它反序列化时我需要将它置为null,但是当它反序列化我的类时,XmlSerializer总是初始化它.

有没有办法避免它初始化null属性?

当它为空时,MyList甚至不会记录在序列化文件中.当我使用空值加载它并再次保存时,MyList不再为null,它被序列化为包含0项的List <>,但不是null.

谢谢.

更多信息:

由于类的结构中存在一些代码限制,IsDeserializing属性不可行

Tho*_*que 11

这看起来像个bug ...

即使您尝试将该属性标记为可为空,它似乎也不起作用.

[XmlArray(IsNullable = true)]
public List<MyObject> MyList { get; set; }
Run Code Online (Sandbox Code Playgroud)

它按如下方式序列化MyList属性:

<MyList xsi:nil="true" />
Run Code Online (Sandbox Code Playgroud)

因此XML清楚地表明该列表为空,但在反序列化之后,它仍然被初始化为空列表...

如果要更换List<MyObject>MyObject[],它工作正常(即使没有IsNullable = true),但它可能不是你想要的...

你应该在Connect上报告这个.

  • 报告错误后,编辑您的问题以包含错误报告的 URL。这将允许其他人投票支持该错误。 (2认同)