序列化處理的步驟
當 Serialize 方法在格式子上被呼叫時,物件序列化會遵照下列規則的順序來進行:
- 進行檢查以判斷格式子是否有代理 (Surrogate) 選取器。如果格式子有的話,檢查代理選取器是否處理指定型別的物件。如果選取器處理物件型別,便會在代理選取器上呼叫 ISerializable.GetObjectData。
- 如果沒有代理選取器,或者代理選取器不處理物件型別,便會進行檢查來判斷物件是否為標記了 Serializable 屬性。如果物件沒有標記該屬性,便會擲回 SerializationException。
- 如果物件已適當標記,檢查物件是否實作 ISerializable 介面。如果是的話,便會在物件上呼叫 GetObjectData。
- 如果物件不實作 ISerializable,則會使用預設的序列化原則,並序列化所有未標記為 NonSerialized 的欄位。