シリアル化プロセスの手順Steps in the serialization process

フォーマッタSerialize メソッドが呼び出されると、次の一連の規則に従って、オブジェクトのシリアル化プロセスが実行されます。When the Serialize method is called on a formatter, object serialization proceeds according to the following sequence of rules:

  • フォーマッタにサロゲート セレクターが存在するかどうかをチェックします。A check is made to determine whether the formatter has a surrogate selector. サロゲート セレクターが存在する場合は、そのサロゲート セレクターが指定された型のオブジェクトを処理できるかどうかをチェックします。If the formatter does, check whether the surrogate selector handles objects of the given type. そのオブジェクトの型を処理できる場合は、サロゲート セレクターで ISerializable.GetObjectData を呼び出します。If the selector handles the object type, ISerializable.GetObjectData is called on the surrogate selector.

  • サロゲート セレクターが存在しないか、またはサロゲート セレクターがそのオブジェクトの型を処理しない場合は、オブジェクトが Serializable 属性でマークされているかどうかをチェックします。If there is no surrogate selector or if it does not handle the object type, a check is made to determine whether the object is marked with the Serializable attribute. オブジェクトにそのマークがない場合、SerializationException がスローされます。If the object is not, a SerializationException is thrown.

  • オブジェクトが適切にマークされている場合は、オブジェクトが ISerializable インターフェイスを実装しているかどうかをチェックします。If the object is marked appropriately, check whether the object implements the ISerializable interface. 実装している場合は、そのオブジェクトで GetObjectData を呼び出します。If the object does, GetObjectData is called on the object.

  • オブジェクトが ISerializable を実装していない場合は、既定のシリアル化ポリシーを適用して、NonSerialized としてマークされていないすべてのフィールドをシリアル化します。If the object does not implement ISerializable, the default serialization policy is used, serializing all fields not marked as NonSerialized.

警告

バイナリ シリアル化は危険です。Binary serialization can be dangerous. 信頼できないソースからのデータの逆シリアル化、および管理下にないシステムへのラウンドトリップのシリアル化をしてはいけません。Never deserialize data from an untrusted source and never round-trip serialized data to systems not under your control.

関連項目See also