シリアル化プロセスの手順
フォーマッタで Serialize メソッドが呼び出されると、オブジェクトのシリアル化プロセスは、次の一連の規則に従って実行されます。
フォーマッタにサロゲート セレクタが存在するかどうかがチェックされます。サロゲート セレクタが存在する場合は、与えられた型のオブジェクトをそのサロゲート セレクタが処理できるかどうかがチェックされます。セレクタがオブジェクトの型を処理できる場合は、サロゲート セレクタで ISerializable.GetObjectData が呼び出されます。
サロゲート セレクタが存在しないか、またはそのサロゲート セレクタがそのオブジェクトの型を処理しない場合は、オブジェクトが Serializable 属性でマークされているかどうかがチェックされます。マークされていない場合は、SerializationException がスローされます。
オブジェクトが適切にマークされている場合は、オブジェクトが ISerializable インターフェイスを実装しているかどうかがチェックされます。実装している場合は、そのオブジェクトの GetObjectData が呼び出されます。
オブジェクトが ISerializable を実装していない場合は、既定のシリアル化ポリシーが適用され、NonSerialized としてマークされていないすべてのフィールドがシリアル化されます。