RemotingServices.Unmarshal 方法

定义

将给定的 ObjRef 转换为代理对象。

重载

Unmarshal(ObjRef)

接受 ObjRef 并从它创建一个代理对象。

Unmarshal(ObjRef, Boolean)

接受 ObjRef 并从它创建一个代理对象,然后将其精炼为服务器上的类型。

Unmarshal(ObjRef)

接受 ObjRef 并从它创建一个代理对象。

public:
 static System::Object ^ Unmarshal(System::Runtime::Remoting::ObjRef ^ objectRef);
public static object Unmarshal (System.Runtime.Remoting.ObjRef objectRef);
[System.Security.SecurityCritical]
public static object Unmarshal (System.Runtime.Remoting.ObjRef objectRef);
static member Unmarshal : System.Runtime.Remoting.ObjRef -> obj
[<System.Security.SecurityCritical>]
static member Unmarshal : System.Runtime.Remoting.ObjRef -> obj
Public Shared Function Unmarshal (objectRef As ObjRef) As Object

参数

objectRef
ObjRef

ObjRef,它代表正在为其创建代理的远程对象。

返回

给定的 ObjRef 所代表对象的代理。

属性

例外

objectRef 参数中指定的 ObjRef 实例不是格式良好的。

在调用堆栈上部,至少有一个调用方没有配置远程处理类型和通道的权限。

示例

下面的代码示例演示如何取消封送对象。

ChannelServices::RegisterChannel( gcnew HttpChannel );

SampleService ^ objectSample = (SampleService^)( Activator::GetObject( SampleService::typeid,
   "http://localhost:9000/MySampleService/SampleService.soap" ) );

// The GetManuallyMarshaledObject() method uses RemotingServices::Marshal()
// to create an ObjRef object for a SampleTwo object.
ObjRef^ objRefSampleTwo = objectSample->GetManuallyMarshaledObject();

SampleTwo ^ objectSampleTwo = (SampleTwo^)( RemotingServices::Unmarshal( objRefSampleTwo ) );

objectSampleTwo->PrintMessage( "ObjRef successfuly unmarshaled." );
ChannelServices.RegisterChannel(new HttpChannel());

SampleService objectSample = (SampleService)Activator.GetObject(typeof(SampleService),
    "http://localhost:9000/MySampleService/SampleService.soap");

// The GetManuallyMarshaledObject() method uses RemotingServices.Marshal()
// to create an ObjRef object for a SampleTwo object.
ObjRef objRefSampleTwo = objectSample.GetManuallyMarshaledObject();

SampleTwo objectSampleTwo = (SampleTwo)RemotingServices.Unmarshal(objRefSampleTwo);

objectSampleTwo.PrintMessage("ObjRef successfuly unmarshaled.");
ChannelServices.RegisterChannel(New HttpChannel())

Dim objectSample As SampleService = CType(Activator.GetObject(GetType(SampleService), _ 
      "http://localhost:9000/MySampleService/SampleService.soap"), SampleService)

' The GetManuallyMarshaledObject() method uses RemotingServices.Marshal()
' to create an ObjRef object for a SampleTwo object.
Dim objRefSampleTwo As ObjRef = objectSample.GetManuallyMarshaledObject()

Dim objectSampleTwo As SampleTwo = CType(RemotingServices.Unmarshal(objRefSampleTwo), SampleTwo)

objectSampleTwo.PrintMessage("I successfully unmarshaled your ObjRef.  Thanks.")

注解

ObjRef 用于跨应用程序域边界传输对象引用的对象的可序列化表示形式。 ObjRef为 对象创建 称为封送处理。 ObjRef可以通过通道将 传输到另一个应用程序域, (可能在另一个进程或计算机上) 。 进入另一个应用程序域后, ObjRef 必须分析 才能为 对象创建代理,通常连接到实际对象。 此操作称为 unmarshaling。 在取消编组期间, ObjRef 将分析 以提取远程对象的方法信息,并创建透明代理和 RealProxy 对象。 在向公共语言运行时注册透明代理之前,分析 ObjRef 的内容将添加到透明代理。

ObjRef包含描述Type要封送的 对象的 和 类的信息、唯一标识特定对象实例的 URI,以及有关如何访问对象所在远程处理细分的通信相关信息。

另请参阅

适用于

Unmarshal(ObjRef, Boolean)

接受 ObjRef 并从它创建一个代理对象,然后将其精炼为服务器上的类型。

public:
 static System::Object ^ Unmarshal(System::Runtime::Remoting::ObjRef ^ objectRef, bool fRefine);
public static object Unmarshal (System.Runtime.Remoting.ObjRef objectRef, bool fRefine);
[System.Security.SecurityCritical]
public static object Unmarshal (System.Runtime.Remoting.ObjRef objectRef, bool fRefine);
static member Unmarshal : System.Runtime.Remoting.ObjRef * bool -> obj
[<System.Security.SecurityCritical>]
static member Unmarshal : System.Runtime.Remoting.ObjRef * bool -> obj
Public Shared Function Unmarshal (objectRef As ObjRef, fRefine As Boolean) As Object

参数

objectRef
ObjRef

ObjRef,它代表正在为其创建代理的远程对象。

fRefine
Boolean

如果为 true,则将代理精炼为服务器上的类型;否则为 false

返回

给定的 ObjRef 所代表对象的代理。

属性

例外

objectRef 参数中指定的 ObjRef 实例不是格式良好的。

在调用堆栈上部,至少有一个调用方没有配置远程处理类型和通道的权限。

注解

ObjRef 用于跨应用程序域边界传输对象引用的对象的可序列化表示形式。 ObjRef为 对象创建 称为封送处理。 ObjRef可以通过通道将 传输到另一个应用程序域, (可能在另一个进程或计算机上) 。 进入另一个应用程序域后, ObjRef 必须分析 才能为 对象创建代理,通常连接到实际对象。 此操作称为 unmarshaling。 在取消编组期间, ObjRef 将分析 以提取远程对象的方法信息,并创建透明代理和 RealProxy 对象。 在向公共语言运行时注册透明代理之前,分析 ObjRef 的内容将添加到透明代理。

ObjRef包含描述Type要封送的 对象的 和 类的信息、唯一标识特定对象实例的 URI,以及有关如何访问对象所在远程处理细分的通信相关信息。

首次创建代理时,代理的类型 MarshalByRefObject为 。 将它强制转换为不同的类型时,远程处理基础结构会跟踪最常用的类型,以避免不必要地加载类型。

另请参阅

适用于