C#[非序列化]内联初始化场没有反序列化
问题描述:
初始化后我有我班[非序列化]字段被初始化内联:C#[非序列化]内联初始化场没有反序列化
[NonSerialized]
private bool running = true;
但是,反序列化我已经运行的对象之后==假。这不是我想要的。我可以强制内联初始化为所有[NonSerialized]字段工作吗?否则,我将不得不实施ISerializable ...
答
你可以在默认构造函数中设置它。
落实System.Runtime.Serialization.IDeserializationCallback
这就是所谓afther对象进行反序列化,所以你可以有你的执行额外的初始化。
+0
不起作用。据我所知,具有[Serializable]属性的类隐式地实现了一个具有特殊签名的构造函数,该签名在反序列化时被调用。 – 2009-05-28 08:35:11
发生这种情况是因为反序列化过程在不调用任何构造函数的情况下创建新类型的未初始化对象。 – sisve 2009-05-28 09:35:00