为什么DataContractSerializer绕过初始值设定项?
背景:
序列化格式化程序在反序列化期间获取未初始化的类实例。也就是说,所有字段都设置为其默认值的实例。对于引用类型,这将为null。这就是为什么在这种情况下“作者”会导致空引用异常。您必须在属性中创建它,就像您已注释掉的代码一样。通过为作者包含这个“懒惰”初始化代码,您可以删除字段初始值设定项。此外,您必须更改构造函数以使用Property而不是字段direclty。
答案 0 :(得分:3)
出于性能原因 - 使用默认的无参数构造函数进行反序列化并设置属性相当慢 - WCF处理它的方式要快得多。
因此,DataContractSerializer不需要无参数的公共构造函数(就像XmlSerializer那样) - 你不需要它,它不会被使用。