次の方法で共有


ObjectManager.RegisterObject メソッド (Object, Int64, SerializationInfo, Int64, MemberInfo)

オブジェクトが逆シリアル化されたときに、そのオブジェクトのメンバを objectID に関連付けて登録し、 SerializationInfo を記録します。

Overloads Public Sub RegisterObject( _
   ByVal obj As Object, _   ByVal objectID As Long, _   ByVal info As SerializationInfo, _   ByVal idOfContainingObj As Long, _   ByVal member As MemberInfo _)
[C#]
public void RegisterObject(objectobj,longobjectID,SerializationInfoinfo,longidOfContainingObj,MemberInfomember);
[C++]
public: void RegisterObject(Object* obj,__int64objectID,SerializationInfo* info,__int64idOfContainingObj,MemberInfo* member);
[JScript]
public function RegisterObject(
   obj : Object,objectID : long,info : SerializationInfo,idOfContainingObj : long,member : MemberInfo);

パラメータ

  • obj
    登録するオブジェクト。
  • objectID
    登録するオブジェクトの ID。
  • info
    objISerializable を実装するか、または ISerializationSurrogate を持っている場合に使用される SerializationInfoinfo は、必要な任意のフィックスアップ情報によって完成され、必要なオブジェクトが完成すると、そのオブジェクトに渡されます。
  • idOfContainingObj
    obj を格納するオブジェクトの ID。このパラメータは、 obj が値型の場合にだけ必要です。
  • member
    obj が存在するコンテナとなるオブジェクト内のフィールド。このパラメータは、 obj が値型の場合にだけ有効です。

例外

例外の種類 条件
ArgumentNullException obj パラメータが null 参照 (Visual Basic では Nothing) です。
ArgumentOutOfRangeException objectID パラメータが 0 以下です。
SerializationException objectIDobj 以外のオブジェクトに登録済みです。または、member が FieldInfo ではなく、member が null 参照 (Visual Basic では Nothing) でもありません。

解説

フィックスアップが ValueType オブジェクトで実行されるために objValueType の場合は、member パラメータおよび idOfContainingObj パラメータを指定する必要があります。 ValueType の情報を格納する領域は、そのコンテナとなるオブジェクトにインラインで割り当てられます。ただし、 ValueTypeObjectManager によってボックス化されて登録された場合は、そのコンテナとなるオブジェクトとの関連付けが失われます。ボックスに設定されたインスタンスではなく、コンテナとなるオブジェクトに格納された ValueType のインスタンスでフィックスアップを確実に発生させるために、 ObjectManager で追加情報の一部を保持します。

ObjectManager は、オブジェクトおよびその ID に関する情報を保持します。その後、逆シリアル化中に、 GetObject を使用して、特定のオブジェクト ID が逆シリアル化済みかどうか、または特定のオブジェクト ID がまだ逆シリアル化されていないオブジェクトへの前方参照かどうかを探索できます。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

ObjectManager クラス | ObjectManager メンバ | System.Runtime.Serialization 名前空間 | ObjectManager.RegisterObject オーバーロードの一覧