言語

RemotingServices.IsTransparentProxy(Object) メソッド

定義

指定されたオブジェクトが透過的なプロキシか実際のオブジェクトかを示すブール値を返します。

public:
 static bool IsTransparentProxy(System::Object ^ proxy);
public static bool IsTransparentProxy(object proxy);
static member IsTransparentProxy : obj -> bool
Public Shared Function IsTransparentProxy (proxy As Object) As Boolean

パラメーター

proxy
Object

チェックするオブジェクトへの参照。

返品

proxy パラメーターで指定されたオブジェクトが透過プロキシか実オブジェクトかを示すブール値。

次のコード例は、 IsTransparentProxy メソッドを使用して、オブジェクトがプロキシオブジェクトか実際のオブジェクトかを判断する方法を示しています。 完全なコード例については、 AsyncResult クラスの例を参照してください。

// Creates an instance of a context-bound type SampleSynchronized.
SampleSynchronized^ sampSyncObj = gcnew SampleSynchronized;

// Checks whether the Object* is a proxy, since it is context-bound.
if ( RemotingServices::IsTransparentProxy( sampSyncObj ) )
   Console::WriteLine( "sampSyncObj is a proxy." );
else
   Console::WriteLine( "sampSyncObj is NOT a proxy." );
// Creates an instance of a context-bound type SampleSynchronized.
SampleSynchronized sampSyncObj = new SampleSynchronized();

// Checks whether the object is a proxy, since it is context-bound.
if (RemotingServices.IsTransparentProxy(sampSyncObj))
    Console.WriteLine("sampSyncObj is a proxy.");
else
    Console.WriteLine("sampSyncObj is NOT a proxy.");
' Creates an instance of a context-bound type SampleSynchronized.
Dim sampSyncObj As New SampleSynchronized()

' Checks whether the object is a proxy, since it is context-bound.
If RemotingServices.IsTransparentProxy(sampSyncObj) Then
   Console.WriteLine("sampSyncObj is a proxy.")
Else
   Console.WriteLine("sampSyncObj is NOT a proxy.")
End If

注釈

任意の種類のリモート処理境界を越えてオブジェクトを使用するクライアントは、実際にはオブジェクトに透過的なプロキシを使用しています。 透過的なプロキシは、実際のオブジェクトがクライアントの空間に存在するという印象を与えます。 これを実現するには、リモート処理インフラストラクチャを使用して、呼び出しを実際のオブジェクトに転送します。

透過的なプロキシ自体は、 RealProxy型のマネージド ランタイム クラスのインスタンスによって収容されます。 RealProxyは、透過的なプロキシから操作を転送するために必要な機能の一部を実装します。 プロキシ オブジェクトは、ガベージ コレクション、メンバーとメソッドのサポートなどのマネージド オブジェクトの関連セマンティクスを継承し、拡張して新しいクラスを形成できます。 したがって、プロキシには二重の性質があります。一方では、リモート オブジェクト (透過的なプロキシ) と同じクラスのオブジェクトとして機能する必要があり、もう一方ではマネージド オブジェクト自体です。

プロキシ オブジェクトは、 AppDomain内のリモート処理サブ区分に関係なく使用できます。 アプリケーションでは、プロキシ参照とオブジェクト参照を区別する必要はありません。 ただし、アクティブ化、有効期間管理、トランザクションなどの問題に対処するサービス プロバイダーは、このような区別を行う必要があります。

適用対象

こちらもご覧ください