Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt die ObjRef zurück, die das Remoteobjekt aus dem angegebenen Proxy darstellt.
Namespace: System.Runtime.Remoting
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Function GetObjRefForProxy ( _
obj As MarshalByRefObject _
) As ObjRef
'Usage
Dim obj As MarshalByRefObject
Dim returnValue As ObjRef
returnValue = RemotingServices.GetObjRefForProxy(obj)
public static ObjRef GetObjRefForProxy (
MarshalByRefObject obj
)
public:
static ObjRef^ GetObjRefForProxy (
MarshalByRefObject^ obj
)
public static ObjRef GetObjRefForProxy (
MarshalByRefObject obj
)
public static function GetObjRefForProxy (
obj : MarshalByRefObject
) : ObjRef
Parameter
- obj
Ein Proxy, der mit dem Objekt verbunden ist, für das Sie eine ObjRef erstellen möchten.
Rückgabewert
Eine ObjRef, die das Remoteobjekt darstellt, mit dem der angegebene Proxy verbunden ist, oder NULL (Nothing in Visual Basic), wenn das Objekt oder der Proxy nicht gemarshallt wurde.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Der direkte Aufrufer verfügt nicht über die Berechtigung für die Infrastruktur. |
Hinweise
Eine ObjRef ist eine serialisierbare Darstellung eines Objekts, mit der ein Objektverweis über eine Anwendungsdomänenbegrenzung hinweg übertragen wird. Das Erstellen einer ObjRef für ein Objekt wird als Marshallen bezeichnet. Die ObjRef kann über einen Channel in eine andere Anwendungsdomäne übertragen werden, die sich möglicherweise in einem anderen Prozess oder auf einem anderen Computer befindet. Wenn sich die ObjRef in der anderen Anwendungsdomäne befindet, muss sie analysiert werden, um einen Proxy für das Objekt zu erstellen, der i. Allg. mit dem eigentlichen Objekt verbunden ist. Dieser Vorgang wird als Unmarshalling bezeichnet. Während das Marshallen rückgängig gemacht wird, wird die ObjRef analysiert, um die Methodeninformationen des Remoteobjekts zu extrahieren, und es werden sowohl die Objekte des transparenten Proxys als auch die RealProxy-Objekte erstellt.
Eine ObjRef enthält Informationen über den Type und die Klasse des Objekts, das gerade gemarshallt wird. Außerdem enthält sie einen URI, der die betreffende Objektinstanz eindeutig bezeichnet, sowie kommunikationsbezogene Informationen über den Zugriff auf die Remoteanwendung, in der sich das Objekt befindet.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie eine ObjRef-Instanz des angegebenen Objekts abgerufen wird.
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 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));
.NET Framework-Sicherheit
- SecurityPermission für die Verwendung von Infrastrukturcode. Anforderungswert: SecurityAction.LinkDemand; Berechtigungswert: SecurityPermissionFlag.Infrastructure
Plattformen
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 unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
RemotingServices-Klasse
RemotingServices-Member
System.Runtime.Remoting-Namespace