次の方法で共有


ObjectHandle.Unwrap メソッド

ラップされたオブジェクトを返します。

Public Overridable Function Unwrap() As Object Implements _   IObjectHandle.Unwrap
[C#]
public virtual object Unwrap();
[C++]
public: virtual Object* Unwrap();
[JScript]
public function Unwrap() : Object;

戻り値

ラップされたオブジェクト。

実装

IObjectHandle.Unwrap

解説

呼び出し時の注意: ObjectHandle は、リモート処理有効期間サービスによって追跡されるリモート MarshalByRefObject です。現在のメソッドへの呼び出しは、 ObjectHandle の有効期間リースが経過していると失敗する可能性があります。

使用例

[Visual Basic, C#, C++] 別の AppDomain 内のオブジェクトをアクティブにし、 Unwrap メソッドを使用してこのオブジェクトへのプロキシを取得して、このプロキシを使用してリモート オブジェクトにアクセスする方法を、次のコード例に示します。

 
' Creates an instance of MyType defined in the assembly called ObjectHandleAssembly.
Dim obj As ObjectHandle = domain.CreateInstance("ObjectHandleAssembly", "MyType")

' Unwrapps the proxy to the MyType object created in the other AppDomain.
Dim testObj As MyType = CType(obj.Unwrap(), MyType)

If RemotingServices.IsTransparentProxy(testObj) Then
   Console.WriteLine("The unwrapped object is a proxy.")
Else
   Console.WriteLine("The unwrapped object is not a proxy!")
End If 
Console.WriteLine("")
Console.Write("Calling a method on the object located in an AppDomain with the hash code ")
Console.WriteLine(testObj.GetAppDomainHashCode())

[C#] 
// Creates an instance of MyType defined in the assembly called ObjectHandleAssembly.
ObjectHandle obj = domain.CreateInstance("ObjectHandleAssembly", "MyType");

// Unwrapps the proxy to the MyType object created in the other AppDomain.
MyType testObj = (MyType)obj.Unwrap();

if(RemotingServices.IsTransparentProxy(testObj))
   Console.WriteLine("The unwrapped object is a proxy.");
else
   Console.WriteLine("The unwrapped object is not a proxy!");    

Console.WriteLine("");
Console.Write("Calling a method on the object located in an AppDomain with the hash code ");
Console.WriteLine(testObj.GetAppDomainHashCode());

[C++] 
// Creates an instance of MyType defined in the assembly called ObjectHandleAssembly.
ObjectHandle*  obj = domain->CreateInstance(S"ObjectHandleAssembly", S"MyType");

// Unwraps the proxy to the MyType object created in the other AppDomain.
MyType* testObj = dynamic_cast<MyType*>(obj->Unwrap());

if (RemotingServices::IsTransparentProxy(testObj))
   Console::WriteLine(S"The unwrapped object is a proxy.");
else
   Console::WriteLine(S"The unwrapped object is not a proxy!");

Console::WriteLine(S"");
Console::Write(S"Calling a method on the object located in an AppDomain with the hash code ");
Console::WriteLine(testObj->GetAppDomainHashCode());

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

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

参照

ObjectHandle クラス | ObjectHandle メンバ | System.Runtime.Remoting 名前空間