다음을 통해 공유


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

ObjRef를 만들려는 개체에 연결되어 있는 프록시입니다.

반환

지정된 프록시가 연결되어 있는 원격 개체를 나타내는 ObjRef이거나, 개체나 프록시가 아직 마샬링되지 않았으면 null입니다.

특성

예외

직접 실행 호출자에 인프라 권한이 없는 경우

예제

다음 코드 예제에서는 가져오는 방법을 보여 줍니다는 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 설명 하는 정보를 포함 합니다 Type 클래스는 마샬링하는 개체의 특정 개체 인스턴스 및 통신을 고유 하 게 식별 하는 URI와 관련 된 원격 애플리케이션에 도달 하는 방법에 대 한 정보 및 위치 개체는 있습니다.

적용 대상