RemotingServices.GetObjRefForProxy(MarshalByRefObject) 메서드

정의

ObjRef 지정된 프록시에서 원격 개체를 나타내는 값을 반환합니다.

public:
 static System::Runtime::Remoting::ObjRef ^ GetObjRefForProxy(MarshalByRefObject ^ obj);
public static System.Runtime.Remoting.ObjRef GetObjRefForProxy(MarshalByRefObject obj);
[System.Security.SecurityCritical]
public static System.Runtime.Remoting.ObjRef GetObjRefForProxy(MarshalByRefObject obj);
static member GetObjRefForProxy : MarshalByRefObject -> System.Runtime.Remoting.ObjRef
[<System.Security.SecurityCritical>]
static member GetObjRefForProxy : MarshalByRefObject -> System.Runtime.Remoting.ObjRef
Public Shared Function GetObjRefForProxy (obj As MarshalByRefObject) As ObjRef

매개 변수

obj
MarshalByRefObject

for를 만들려는 개체에 연결된 프록시입니다 ObjRef .

반품

ObjRef 지정된 프록시가 연결된 원격 개체 또는 개체 또는 null 프록시가 마샬링되지 않은 경우를 나타내는 A입니다.

특성

예외

즉시 호출자에게 인프라 권한이 없습니다.

예제

다음 코드 예제에서는 지정된 개체에 대한 인스턴스를 ObjRef 가져오는 방법을 보여 줍니다.

ObjRef^ objRefSample = RemotingServices::GetObjRefForProxy( myRemoteObject );
Console::WriteLine( "***ObjRef Details***" );
Console::WriteLine( "URI:\t {0}", objRefSample->URI );
array<Object^>^channelData = objRefSample->ChannelInfo->ChannelData;
Console::WriteLine( "Channel Info:" );
IEnumerator^ myEnum = channelData->GetEnumerator();
while ( myEnum->MoveNext() )
{
   Object^ o = safe_cast<Object^>(myEnum->Current);
   Console::WriteLine( "\t {0}", o );
}

IEnvoyInfo^ envoyInfo = objRefSample->EnvoyInfo;
if ( envoyInfo == nullptr )
{
   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( System::Drawing::Bitmap::typeid, objRefSample ) );
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));
Dim objRefSample As ObjRef = RemotingServices.GetObjRefForProxy(myRemoteObject)

Console.WriteLine("***ObjRef Details***")
Console.WriteLine("URI:" + ControlChars.Tab + "{0}", objRefSample.URI)

Dim channelData As Object() = objRefSample.ChannelInfo.ChannelData
Console.WriteLine("Channel Info:")

Dim o As Object
For Each o In  channelData
   Console.WriteLine(ControlChars.Tab + "{0}", o.ToString())
Next o

Dim envoyInfo As IEnvoyInfo = objRefSample.EnvoyInfo
If envoyInfo Is Nothing Then
   Console.WriteLine("This ObjRef does not have envoy information.")
Else
   Dim envoySinks As IMessageSink = envoyInfo.EnvoySinks
   Console.WriteLine("Envoy Sink Class: {0}", envoySinks)
End If

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

Console.WriteLine("Can my object cast to a Bitmap? {0}", typeInfo.CanCastTo(GetType(System.Drawing.Bitmap), objRefSample))

설명

ObjRef 애플리케이션 도메인 경계를 넘어 개체 참조를 전송하는 데 사용되는 개체의 직렬화 가능한 표현입니다. 개체에 ObjRef 대한 만들기를 마샬링이라고 합니다. ObjRef 채널을 통해 다른 애플리케이션 도메인(다른 프로세스 또는 컴퓨터에서)으로 전송할 수 있습니다. 다른 애플리케이션 도메인에서 일반적으로 실제 개체에 연결된 개체에 대한 프록시를 만들려면 ObjRef 구문 분석해야 합니다. 이 작업을 비마할링이라고합니다. 경계를 해제하는 ObjRef 동안 원격 개체의 메서드 정보를 추출하기 위해 구문 분석되고 투명 프록시와 RealProxy 개체가 모두 생성됩니다.

A ObjRef 에는 마샬링되는 개체의 클래스, 특정 개체 인스턴스를 고유하게 식별하는 URI 및 개체가 있는 원격 애플리케이션에 도달하는 방법에 대한 통신 관련 정보를 설명하는 Type 정보가 포함되어 있습니다.

적용 대상