C# 使用XmlSerializer.Deserialize进行反序列化时何时调用类构造函数?
我的应用程序使用XmlSerializer保存一个类,然后在需要时,通过再次反序列化创建一个实例。 我想在构造函数逻辑中使用类的一些属性成员(在反序列化期间分配)。假设首先分配属性是可以的,一旦分配了所有属性,会调用构造函数吗C# 使用XmlSerializer.Deserialize进行反序列化时何时调用类构造函数?,c#,.net,xmlserializer,xml-deserialization,C#,.net,Xmlserializer,Xml Deserialization,我的应用程序使用XmlSerializer保存一个类,然后在需要时,通过再次反序列化创建一个实例。 我想在构造函数逻辑中使用类的一些属性成员(在反序列化期间分配)。假设首先分配属性是可以的,一旦分配了所有属性,会调用构造函数吗 继续本主题,是否有任何关于反序列化过程中发生的事件序列的文档可用?不可以假设在构造函数运行时将设置属性。事实恰恰相反。构造函数是创建对象实例时运行的第一段代码。在构造函数开始执行之前,无法设置属性 XML反序列化过程大致如下所示 调用无参数构造函数 将属性设置为其反序列
继续本主题,是否有任何关于反序列化过程中发生的事件序列的文档可用?不可以假设在构造函数运行时将设置属性。事实恰恰相反。构造函数是创建对象实例时运行的第一段代码。在构造函数开始执行之前,无法设置属性 XML反序列化过程大致如下所示
- 调用无参数构造函数
- 将属性设置为其反序列化的值
class MyClass {
...
public static MyClass Deserialize(string xmlContents) {
var local = ... // Do the XML deserialization
local.PostCreateLogic();
return local;
}
}
构造函数是对象的创建。在指定属性值之前,需要创建对象。然后,将首先调用构造函数
我不知道这个序列的任何文档。但是,如果您的类不是那么大,可以添加一些断点,您将看到哪些事件是第一个事件。对于XmlSerializer来说,这是正确的,但是有些序列化程序在反序列化对象时根本不调用构造函数。