RemotingServices.IsTransparentProxy 方法

返回一个布尔值,该值指示给定的对象是透明代理还是实际对象。

**命名空间:**System.Runtime.Remoting
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public Shared Function IsTransparentProxy ( _
    proxy As Object _
) As Boolean
用法
Dim proxy As Object
Dim returnValue As Boolean

returnValue = RemotingServices.IsTransparentProxy(proxy)
public static bool IsTransparentProxy (
    Object proxy
)
public:
static bool IsTransparentProxy (
    Object^ proxy
)
public static boolean IsTransparentProxy (
    Object proxy
)
public static function IsTransparentProxy (
    proxy : Object
) : boolean

参数

  • proxy
    对要检查的对象的引用。

返回值

一个布尔值,该值指示 proxy 参数中指定的对象是透明代理还是实际对象。

备注

客户端在跨任何类型的远程处理边界使用对象时,对对象使用的实际上是透明代理。透明代理使人以为实际对象驻留在客户端空间中。它实现这一点的方法是:使用远程处理基础结构将对其进行的调用转发给真实对象。

透明代理本身由 RealProxy 类型的托管运行时类的实例收容。RealProxy 实现从透明代理转发操作所需的部分功能。代理对象继承托管对象(例如垃圾回收、对成员和方法的支持)的关联语义,可以将其进行扩展以形成新类。这样,该代理具有双重性质,一方面,它需要充当与远程对象(透明代理)相同的类的对象;另一方面,它本身是托管对象。

可以在不考虑 AppDomain 中任何远程处理分支的情况下使用代理对象。应用程序不需要区分代理引用和对象引用。但是,处理激活、生存期管理和事务等问题的服务提供程序需要进行这种区分。

示例

下面的代码示例演示如何使用 IsTransparentProxy 方法确定一个对象是代理还是实际对象。有关完整的代码示例,请参见 AsyncResult 类的示例。

' Creates an instance of a context-bound type SampleSynchronized.
Dim sampSyncObj As New SampleSyncronized()

' 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 
// Creates an instance of a context-bound type SampleSynchronized.
SampleSyncronized sampSyncObj = new SampleSyncronized();

// 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.
SampleSyncronized^ sampSyncObj = gcnew SampleSyncronized;

// 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.
SampleSyncronized sampSyncObj = new SampleSyncronized();
// 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.");
}

平台

Windows 98、Windows 2000 SP4、Windows Millennium Edition、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

请参见

参考

RemotingServices 类
RemotingServices 成员
System.Runtime.Remoting 命名空间
RealProxy
ObjRef 类