RemotingServices.GetObjRefForProxy(MarshalByRefObject) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Belirtilen proxy'den ObjRef uzak nesneyi temsil eden öğesini döndürür.
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
Parametreler
Oluşturmak istediğiniz nesneye bağlı bir ObjRef ara sunucu.
Döndürülenler
ObjRef Belirtilen proxy'nin bağlı olduğu uzak nesneyi temsil eden veya null
nesne veya ara sunucu sıralanmamışsa bir.
- Öznitelikler
Özel durumlar
Hemen çağıranın altyapı izni yok.
Örnekler
Aşağıdaki kod örneği, belirtilen nesne için bir ObjRef örneğin nasıl alınduğunu gösterir.
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))
Açıklamalar
A ObjRef , bir nesne başvurusunu bir uygulama etki alanı sınırına aktarmak için kullanılan bir nesnenin serileştirilebilir bir gösterimidir. Bir nesne için oluşturma ObjRef , hazırlama olarak bilinir. ObjRef bir kanal aracılığıyla başka bir uygulama etki alanına (büyük olasılıkla başka bir işlemde veya bilgisayarda) aktarılabilir. Diğer uygulama etki alanına girdikten sonra, ObjRef nesne için genellikle gerçek nesneye bağlı bir ara sunucu oluşturmak için öğesinin ayrıştırılması gerekir. Bu işlem, özetleme olarak bilinir. Özetleme sırasında, ObjRef uzak nesnenin yöntem bilgilerini ayıklamak için ayrıştırılır ve hem saydam ara sunucu hem RealProxy de nesneler oluşturulur.
, ObjRef sıralanan nesnenin Type ve sınıfını açıklayan bilgileri, belirli nesne örneğini benzersiz olarak tanımlayan bir URI'yi ve nesnenin bulunduğu uzak uygulamaya nasıl erişileceğiyle ilgili iletişimle ilgili bilgileri içerir.