我尝试通过数据合同序列化序列化和反序列化自定义类。序列化效果很好。但是,在反序列化时,我遇到了一个问题,因为这个(来源):
反序列化对象时不调用构造函数。
问题是我在构造函数中做了一些初始化。这包括一些数据结构。
如果没有对构造函数的调用,数据结构null
就会失败,并且在反序列化期间对 setter 函数的调用会失败。
在使用任何访问器之前,如何在反序列化过程之前或期间调用构造函数或初始化对象?
我可以通过属性将一些方法声明为回调,如下所示(相同来源):
// This method is called after the object
// is completely deserialized. Use it instead of the
// constructror.
[OnDeserialized]
void OnDeserialized(StreamingContext context)
{
fullName = firstName + " " + lastName;
}
但看起来它们都是在反序列化后触发的。
我必须切换到 XML 序列化吗?