IDeserializationCallback接口 using System; using System.Runtime.InteropServices; namespace System.Runtime.Serialization [ComVisible(true)] public interface IDeserializationCallback { // 摘要: // void OnDeserialization(object sender); } } IDeserializationCallback接口是反序列化时会执行的接口,接口里面只有一个OnDeserialization 方法,系统在反序列化的时候会检查待序列化对象是否实现了IDeserializationCallback接口,如果实现了,那么系统就调用该接口中的OnDeserialization方法。 我们实现IDeserializationCallback接口,这个接口的方法会再每次反序列化的时候执行。
System.Runtime.Serialization; namespace ConsoleApplication1.序列化和持久化 { [Serializable] public class MyClass : IDeserializationCallback System.Runtime.Serialization; namespace ConsoleApplication1.序列化和持久化 { [Serializable] public class MyClass : IDeserializationCallback
如果这个时候你想调用对象的成员,建议你的类型提供一个应用了OnDeserialized特性的方法,或者让类型实现IDeserializationCallback接口的OnDeserialization方法
1: [Serializable] 2: public sealed class TimeZoneInfo : IEquatable<TimeZoneInfo>, ISerializable, IDeserializationCallback
如果正在进行反序列化的类实现了 IDeserializationCallback,则反序列化整个对象图表后,将自动调用 OnSerialization 方法。此时,引用的所有子对象均已完全还原。
> 16 [Serializable] 17 public class EmployeeSpecificationAdd : System.Runtime.Serialization.IDeserializationCallback
二十五、尽可能将类型实现为可序列化的类型 1、类型表示的不是UI控件、窗口或者表单,都应使类型支持序列化; 2、在添加了NonSerializedAttribute的反序列化的属性时可以通过实现IDeserializationCallback