RemotingServices.IsTransparentProxy(Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
回傳一個布林值,指示該物件是透明代理還是真實物件。
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 應用程式無需區分代理參考與物件參考。 然而,服務提供者在處理啟用、生命週期管理及交易等問題時,需要做出此類區分。