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;
戻り値
ラップされたオブジェクト。
実装
解説
呼び出し時の注意: 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 名前空間