ObjectManager.RegisterObject 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在物件被反序列化時註冊。
多載
| 名稱 | Description |
|---|---|
| RegisterObject(Object, Int64) |
在物件被反序列化時註冊,並將其與 |
| RegisterObject(Object, Int64, SerializationInfo) |
在物件被去序列化時註冊,並將其與 |
| RegisterObject(Object, Int64, SerializationInfo, Int64, MemberInfo) |
在物件被反序列化時註冊其成員,並將其與 |
| RegisterObject(Object, Int64, SerializationInfo, Int64, MemberInfo, Int32[]) |
在物件反序列化時,註冊包含在陣列中的成員,並將其與 |
RegisterObject(Object, Int64)
在物件被反序列化時註冊,並將其與 objectID關聯。
public:
virtual void RegisterObject(System::Object ^ obj, long objectID);
public virtual void RegisterObject(object obj, long objectID);
[System.Security.SecurityCritical]
public virtual void RegisterObject(object obj, long objectID);
abstract member RegisterObject : obj * int64 -> unit
override this.RegisterObject : obj * int64 -> unit
[<System.Security.SecurityCritical>]
abstract member RegisterObject : obj * int64 -> unit
override this.RegisterObject : obj * int64 -> unit
Public Overridable Sub RegisterObject (obj As Object, objectID As Long)
參數
- obj
- Object
要登記的對象。
- objectID
- Int64
要註冊的物件的 ID。
- 屬性
例外狀況
參數 obj 為 null。
objectID參數小於或等於零。
該 objectID 已註冊為非 obj的物件。
備註
ObjectManager 保留物件及其 ID 的資訊。 在反序列化後期, GetObject 可以用來判斷特定物件 ID 是否已被反序列化,或是尚未反序列化的物件的前向參考。
適用於
RegisterObject(Object, Int64, SerializationInfo)
在物件被去序列化時註冊,並將其與 objectID關聯,並記錄 SerializationInfo 與其使用的物件。
public:
void RegisterObject(System::Object ^ obj, long objectID, System::Runtime::Serialization::SerializationInfo ^ info);
public void RegisterObject(object obj, long objectID, System.Runtime.Serialization.SerializationInfo info);
[System.Security.SecurityCritical]
public void RegisterObject(object obj, long objectID, System.Runtime.Serialization.SerializationInfo info);
member this.RegisterObject : obj * int64 * System.Runtime.Serialization.SerializationInfo -> unit
[<System.Security.SecurityCritical>]
member this.RegisterObject : obj * int64 * System.Runtime.Serialization.SerializationInfo -> unit
Public Sub RegisterObject (obj As Object, objectID As Long, info As SerializationInfo)
參數
- obj
- Object
要登記的對象。
- objectID
- Int64
要註冊的物件的 ID。
- info
- SerializationInfo
SerializationInfo如果obj實ISerializable作或擁有 ISerializationSurrogate。
info 會以所需的修正資訊完成,並在該物件完成後交給該物件。
- 屬性
例外狀況
參數 obj 為 null。
objectID參數小於或等於零。
該 objectID 已註冊為非 obj的物件。
備註
ObjectManager 同時保留物件及其 ID 的資訊。 在反序列化過程中,你可以用 GetObject 來判斷某個物件 ID 是否已經被反序列化,或是它作為尚未解序列的物件的前向參考。
適用於
RegisterObject(Object, Int64, SerializationInfo, Int64, MemberInfo)
在物件被反序列化時註冊其成員,並將其與 objectID關聯,並記錄 SerializationInfo。
public:
void RegisterObject(System::Object ^ obj, long objectID, System::Runtime::Serialization::SerializationInfo ^ info, long idOfContainingObj, System::Reflection::MemberInfo ^ member);
public void RegisterObject(object obj, long objectID, System.Runtime.Serialization.SerializationInfo info, long idOfContainingObj, System.Reflection.MemberInfo member);
[System.Security.SecurityCritical]
public void RegisterObject(object obj, long objectID, System.Runtime.Serialization.SerializationInfo info, long idOfContainingObj, System.Reflection.MemberInfo member);
member this.RegisterObject : obj * int64 * System.Runtime.Serialization.SerializationInfo * int64 * System.Reflection.MemberInfo -> unit
[<System.Security.SecurityCritical>]
member this.RegisterObject : obj * int64 * System.Runtime.Serialization.SerializationInfo * int64 * System.Reflection.MemberInfo -> unit
Public Sub RegisterObject (obj As Object, objectID As Long, info As SerializationInfo, idOfContainingObj As Long, member As MemberInfo)
參數
- obj
- Object
要登記的對象。
- objectID
- Int64
要註冊的物件的 ID。
- info
- SerializationInfo
SerializationInfo如果obj實ISerializable作或擁有 ISerializationSurrogate。
info 會以所需的修正資訊完成,並在該物件完成後交給該物件。
- idOfContainingObj
- Int64
包含 obj的物件的 ID 為 。 此參數僅在 obj 為值型別時才需要。
- member
- MemberInfo
包含物件中的域,其中 obj 存在。 此參數僅在 obj 為值型態時才有意義。
- 屬性
例外狀況
參數 obj 為 null。
objectID參數小於或等於零。
該 objectID 物件已被註冊為除 obj,或 member 不是 FieldInfomembernull且 。
備註
你需要提供 member 和 idOfContainingObj 參數objValueType,因為修正物件的方式不同ValueType。 儲存 a ValueType 資訊的空間與其所包含的物件同列分配。 然而,當 被 ValueType 打包以註冊為 ObjectManager時,它會失去與所包含物件的連結。 為了確保修正發生在包含物件的實例 ValueType 中,而非盒中實例,該實 ObjectManager 例保留了一些額外資訊。
ObjectManager 保留物件及其 ID 的資訊。 在反序列化過程中, GetObject 可以用來判斷特定物件 ID 是否已被反序列化,或是尚未反序列化物件的前向參考。
適用於
RegisterObject(Object, Int64, SerializationInfo, Int64, MemberInfo, Int32[])
在物件反序列化時,註冊包含在陣列中的成員,並將其與 objectID關聯,並記錄 SerializationInfo。
public:
void RegisterObject(System::Object ^ obj, long objectID, System::Runtime::Serialization::SerializationInfo ^ info, long idOfContainingObj, System::Reflection::MemberInfo ^ member, cli::array <int> ^ arrayIndex);
public void RegisterObject(object obj, long objectID, System.Runtime.Serialization.SerializationInfo info, long idOfContainingObj, System.Reflection.MemberInfo member, int[] arrayIndex);
[System.Security.SecurityCritical]
public void RegisterObject(object obj, long objectID, System.Runtime.Serialization.SerializationInfo info, long idOfContainingObj, System.Reflection.MemberInfo member, int[] arrayIndex);
member this.RegisterObject : obj * int64 * System.Runtime.Serialization.SerializationInfo * int64 * System.Reflection.MemberInfo * int[] -> unit
[<System.Security.SecurityCritical>]
member this.RegisterObject : obj * int64 * System.Runtime.Serialization.SerializationInfo * int64 * System.Reflection.MemberInfo * int[] -> unit
Public Sub RegisterObject (obj As Object, objectID As Long, info As SerializationInfo, idOfContainingObj As Long, member As MemberInfo, arrayIndex As Integer())
參數
- obj
- Object
要登記的對象。
- objectID
- Int64
要註冊的物件的 ID。
- info
- SerializationInfo
SerializationInfo如果obj實ISerializable作或擁有 ISerializationSurrogate。
info 會以所需的修正資訊完成,並在該物件完成後交給該物件。
- idOfContainingObj
- Int64
包含 obj的物件的 ID 為 。 此參數僅在 obj 為值型別時才需要。
- member
- MemberInfo
包含物件中的域,其中 obj 存在。 此參數僅在 obj 為值型態時才有意義。
- arrayIndex
- Int32[]
若 obj 是 且 ValueType 是陣列的成員, arrayIndex 則 包含該陣列中存在 obj 的索引。
arrayIndex 若 obj 不是陣列的 A ValueType ,則 會被忽略。
- 屬性
例外狀況
參數 obj 為 null。
objectID參數小於或等於零。
該objectID物件已被註冊為非 obj,或member不是 FieldInfomember 且 。null
備註
你需要提供 member 和 idOfContainingObj 參數objValueType,因為修正物件的方式不同ValueType。 儲存 a ValueType 資訊的空間與其所包含的物件同列分配。 然而,當 被 ValueType 打包以註冊為 ObjectManager時,它會失去與所包含物件的連結。 為了確保修正發生在包含物件的實例 ValueType 中,而非盒中實例,該實 ObjectManager 例保留了一些額外資訊。
ObjectManager 保留物件及其 ID 的資訊。 在反序列化過程中, GetObject 可以用來判斷特定物件 ID 是否已被反序列化,或是尚未反序列化物件的前向參考。