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