Export (0) Print
Expand All

RemotingServices.GetObjRefForProxy Method

Returns the ObjRef that represents the remote object from the specified proxy.

Namespace:  System.Runtime.Remoting
Assembly:  mscorlib (in mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
public static ObjRef GetObjRefForProxy(
	MarshalByRefObject obj
)

Parameters

obj
Type: System.MarshalByRefObject

A proxy connected to the object you want to create a ObjRef for.

Return Value

Type: System.Runtime.Remoting.ObjRef
A ObjRef that represents the remote object the specified proxy is connected to, or null if the object or proxy have not been marshaled.

ExceptionCondition
SecurityException

The immediate caller does not have infrastructure permission.

A ObjRef is a serializable representation of an object used to transfer an object reference across an application domain boundary. Creating a ObjRef for an object is known as marshaling. The ObjRef can be transferred through a channel into another application domain (possibly on another process or computer). Once in the other application domain, the ObjRef must be parsed to create a proxy for the object, generally connected to the real object. This operation is known as unmarshaling. During unmarshaling, the ObjRef is parsed to extract the method information of the remote object and both the transparent proxy and RealProxy objects are created.

A ObjRef contains information that describes the Type and class of the object being marshaled, a URI that uniquely identifies the specific object instance, and communication related information about how to reach the remote application where the object is located.

The following code example demonstrates how to get a ObjRef instance for the specified object.

ObjRef objRefSample = RemotingServices.GetObjRefForProxy(myRemoteObject);

Console.WriteLine("***ObjRef Details***");
Console.WriteLine("URI:\t{0}", objRefSample.URI);

object[] channelData = objRefSample.ChannelInfo.ChannelData;

Console.WriteLine("Channel Info:");
foreach(object o in channelData)
    Console.WriteLine("\t{0}", o.ToString());

IEnvoyInfo envoyInfo = objRefSample.EnvoyInfo;

if (envoyInfo == null) {
    Console.WriteLine("This ObjRef does not have envoy information.");
}
else {
    IMessageSink envoySinks = envoyInfo.EnvoySinks;
    Console.WriteLine("Envoy Sink Class: {0}", envoySinks);
}

IRemotingTypeInfo typeInfo = objRefSample.TypeInfo;
Console.WriteLine("Remote type name: {0}", typeInfo.TypeName);

Console.WriteLine("Can my object cast to a Bitmap? {0}",
    typeInfo.CanCastTo(typeof(System.Drawing.Bitmap), objRefSample));
ObjRef* objRefSample = RemotingServices::GetObjRefForProxy(myRemoteObject);

Console::WriteLine(S"***ObjRef Details***");
Console::WriteLine(S"URI:\t {0}", objRefSample->URI);

Object* channelData __gc[] = objRefSample->ChannelInfo->ChannelData;

Console::WriteLine(S"Channel Info:");
IEnumerator* myEnum = channelData->GetEnumerator();
while (myEnum->MoveNext()) 
{
   Object* o = __try_cast<Object*>(myEnum->Current);
   Console::WriteLine(S"\t {0}", o);
}

IEnvoyInfo* envoyInfo = objRefSample->EnvoyInfo;

if (envoyInfo == 0) 
{
   Console::WriteLine(S"This ObjRef does not have envoy information.");
}
else 
{
   IMessageSink* envoySinks = envoyInfo->EnvoySinks;
   Console::WriteLine(S"Envoy Sink Class: {0}", envoySinks);
}

IRemotingTypeInfo* typeInfo = objRefSample->TypeInfo;
Console::WriteLine(S"Remote type name: {0}", typeInfo->TypeName);

Console::WriteLine(S"Can my Object* cast to a Bitmap? {0}",
   __box(typeInfo->CanCastTo(__typeof(System::Drawing::Bitmap), objRefSample)));

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft