当对格式化程序调用 Serialize 方法时,对象序列化将根据以下规则序列继续进行:
进行检查以确定格式化程序是否有代理选择器。如果格式化程序有代理选择器,则检查该代理选择器是否处理给定类型的对象。如果选择器处理该对象类型,则对该代理选择器调用 ISerializable.GetObjectData。
如果没有代理选择器或者代理选择器不处理该对象类型,则进行检查以确定是否用 Serializable 属性标记了该对象。如果没有用此属性标记该对象,则引发 SerializationException。
如果用此属性正确标记了该对象,则检查该对象是否实现 ISerializable 接口。如果该对象实现此接口,则对该对象调用 GetObjectData。
如果该对象没有实现 ISerializable,则使用默认的序列化策略,序列化所有未标记为 NonSerialized 的字段。