オブジェクトが逆シリアル化されたときに、そのオブジェクトのメンバを 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
obj が ISerializable を実装するか、または ISerializationSurrogate を持っている場合に使用される SerializationInfo 。 info は、必要な任意のフィックスアップ情報によって完成され、必要なオブジェクトが完成すると、そのオブジェクトに渡されます。 - idOfContainingObj
obj を格納するオブジェクトの ID。このパラメータは、 obj が値型の場合にだけ必要です。 - member
obj が存在するコンテナとなるオブジェクト内のフィールド。このパラメータは、 obj が値型の場合にだけ有効です。
例外
| 例外の種類 | 条件 |
|---|---|
| ArgumentNullException | obj パラメータが null 参照 (Visual Basic では Nothing) です。 |
| ArgumentOutOfRangeException | objectID パラメータが 0 以下です。 |
| SerializationException | objectID が obj 以外のオブジェクトに登録済みです。または、member が FieldInfo ではなく、member が null 参照 (Visual Basic では Nothing) でもありません。 |
解説
フィックスアップが ValueType オブジェクトで実行されるために obj が ValueType の場合は、member パラメータおよび idOfContainingObj パラメータを指定する必要があります。 ValueType の情報を格納する領域は、そのコンテナとなるオブジェクトにインラインで割り当てられます。ただし、 ValueType が ObjectManager によってボックス化されて登録された場合は、そのコンテナとなるオブジェクトとの関連付けが失われます。ボックスに設定されたインスタンスではなく、コンテナとなるオブジェクトに格納された 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 オーバーロードの一覧