ObjectManager.RegisterObject 方法

定义

在反序列化对象时注册该对象。

重载

RegisterObject(Object, Int64)

在反序列化对象时注册该对象,并将其与 objectID 相关联。

RegisterObject(Object, Int64, SerializationInfo)

在反序列化对象时注册该对象,同时将其与 objectID 相关联并记录与其一起使用的 SerializationInfo

RegisterObject(Object, Int64, SerializationInfo, Int64, MemberInfo)

在对象成员反序列化时注册该对象成员,同时将其与 objectID 相关联并记录 SerializationInfo

RegisterObject(Object, Int64, SerializationInfo, Int64, MemberInfo, Int32[])

在对象中包含的数组的成员进行反序列化时注册该成员,同时将其与 objectID 相关联并记录 SerializationInfo

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

obj 实现 SerializationInfo 或具有 ISerializable 时使用的 ISerializationSurrogateinfo 将用任何所需的链接地址信息来完成,然后在所需的对象完成时传递给该对象。

属性

例外

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);
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

obj 实现 SerializationInfo 或具有 ISerializable 时使用的 ISerializationSurrogateinfo 将用任何所需的链接地址信息来完成,然后在所需的对象完成时传递给该对象。

idOfContainingObj
Int64

包含 obj 的对象的 ID。 仅当 obj 是值类型时才需要此参数。

member
MemberInfo

obj 所在的包含对象中的字段。 仅当 obj 是值类型时此参数才有意义。

属性

例外

obj 参数为 null

objectID 参数小于或等于零。

objectID 已经为 obj 之外的对象注册,或者 member 不为 FieldInfomember 不为 null

注解

如果需要提供memberidOfContainingObj参数,前提是objValueType修复在对象上ValueType执行修复的方式。 存储信息 ValueType 的空间与包含对象一起内联分配。 但是,当装箱以向该ObjectManager对象注册时ValueType,它将失去与其包含对象的连接。 为了保证修复发生在存储在包含对象而不是装箱实例中的实例 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);
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

obj 实现 SerializationInfo 或具有 ISerializable 时使用的 ISerializationSurrogateinfo 将用任何所需的链接地址信息来完成,然后在所需的对象完成时传递给该对象。

idOfContainingObj
Int64

包含 obj 的对象的 ID。 仅当 obj 是值类型时才需要此参数。

member
MemberInfo

obj 所在的包含对象中的字段。 仅当 obj 是值类型时此参数才有意义。

arrayIndex
Int32[]

如果 objValueType 和数组的成员,arrayIndex 则包含 obj 所在数组中的索引。 如果 arrayIndex 不是同时为 ValueType 和数组成员,则将忽略 obj

属性

例外

obj 参数为 null

objectID 参数小于或等于零。

objectID 已经为 obj 之外的对象注册,或者 member 不是 FieldInfomember 不是 null

注解

如果需要提供memberidOfContainingObj参数,前提是修复ValueType在对象上ValueType执行修复的方式。obj 用于存储信息 ValueType 的空间与包含的对象一起内联分配。 However, when the ValueType is boxed to be registered with the ObjectManager, it loses the connection with its containing object. 为了确保修复发生在存储在包含对象的实例 ValueType 而不是装箱实例中,保留 ObjectManager 一些其他信息。

ObjectManager 保留有关对象及其 ID 的信息。 稍后在反序列化期间, GetObject 可用于发现特定对象 ID 是否已反序列化,或者是否是对尚未反序列化的对象的正向引用。

适用于