为什么DataContractSerializer会绕过初始值设定项?

时间:2010-06-22 18:46:33

标签: .net serialization

为什么DataContractSerializer绕过初始值设定项?

背景:

  

序列化格式化程序在反序列化期间获取未初始化的类实例。也就是说,所有字段都设置为其默认值的实例。对于引用类型,这将为null。这就是为什么在这种情况下“作者”会导致空引用异常。您必须在属性中创建它,就像您已注释掉的代码一样。通过为作者包含这个“懒惰”初始化代码,您可以删除字段初始值设定项。此外,您必须更改构造函数以使用Property而不是字段direclty。

/卡勒 http://social.msdn.microsoft.com/Forums/en-CA/netfxremoting/thread/b786050e-4850-4739-8b2e-d57e35d95952

1 个答案:

答案 0 :(得分:3)

出于性能原因 - 使用默认的无参数构造函数进行反序列化并设置属性相当慢 - WCF处理它的方式要快得多。

因此,DataContractSerializer不需要无参数的公共构造函数(就像XmlSerializer那样) - 你不需要它,它不会被使用。