|
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
|
Traducción
Original
|
ObjRef.GetRealObject (Método)
.NET Framework 4.5
Espacio de nombres: System.Runtime.Remoting
Ensamblado: mscorlib (en mscorlib.dll)
Parámetros
- context
- Tipo: System.Runtime.Serialization.StreamingContext
Contexto donde reside el objeto actual.
Implementaciones
IObjectReference.GetRealObject(StreamingContext)| Excepción | Condición |
|---|---|
| SecurityException |
// a custom ObjRef class that outputs its status [PermissionSet(SecurityAction.Demand, Name="FullTrust")] public class MyObjRef : ObjRef { // only instantiate via marshaling or deserialization private MyObjRef() { } public MyObjRef(MarshalByRefObject o, Type t) : base(o, t) { Console.WriteLine("Created MyObjRef."); ORDump(); } public MyObjRef(SerializationInfo i, StreamingContext c) : base(i, c) { Console.WriteLine("Deserialized MyObjRef."); } public override void GetObjectData(SerializationInfo s, StreamingContext c) { // After calling the base method, change the type from ObjRef to MyObjRef base.GetObjectData(s, c); s.SetType(GetType()); Console.WriteLine("Serialized MyObjRef."); } public override Object GetRealObject(StreamingContext context) { if ( IsFromThisAppDomain() || IsFromThisProcess() ) { Console.WriteLine("Returning actual object referenced by MyObjRef."); return base.GetRealObject(context); } else { Console.WriteLine("Returning proxy to remote object."); return RemotingServices.Unmarshal(this); } } public void ORDump() { Console.WriteLine(" --- Reporting MyObjRef Info --- "); Console.WriteLine("Reference to {0}.", TypeInfo.TypeName); Console.WriteLine("URI is {0}.", URI); Console.WriteLine("\nWriting EnvoyInfo: "); if ( EnvoyInfo != null) { IMessageSink EISinks = EnvoyInfo.EnvoySinks; while (EISinks != null) { Console.WriteLine("\tSink: " + EISinks.ToString()); EISinks = EISinks.NextSink; } } else Console.WriteLine("\t {no sinks}"); Console.WriteLine("\nWriting ChannelInfo: "); for (int i = 0; i < ChannelInfo.ChannelData.Length; i++) Console.WriteLine ("\tChannel: {0}", ChannelInfo.ChannelData[i]); Console.WriteLine(" ----------------------------- "); } } // a class that uses MyObjRef [PermissionSet(SecurityAction.Demand, Name="FullTrust")] public class LocalObject : MarshalByRefObject { // overriding CreateObjRef will allow us to return a custom ObjRef public override ObjRef CreateObjRef(Type t) { return new MyObjRef(this, t); } }
- SecurityPermission
para proporcionar servicios de serialización. Valor de la petición: SecurityAction.LinkDemand; valor del permiso: SecurityPermissionFlag.SerializationFormatter
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.