Ler en inglés

Compartir por


ObjRef Clase

Definición

Almacena toda la información relevante necesaria para generar un proxy y establecer comunicación con un objeto remoto.

C#
[System.Serializable]
public class ObjRef : System.Runtime.Serialization.IObjectReference, System.Runtime.Serialization.ISerializable
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class ObjRef : System.Runtime.Serialization.IObjectReference, System.Runtime.Serialization.ISerializable
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public class ObjRef : System.Runtime.Serialization.IObjectReference, System.Runtime.Serialization.ISerializable
Herencia
ObjRef
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra el uso de un personalizado ObjRef. Para ver el código de activación que prueba el personalizado ObjRef, vea el ejemplo del RegisterWellKnownServiceType método .

C#
// a custom ObjRef class that outputs its status
public class MyObjRef : ObjRef {

   // only instantiate using 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
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);
   }
}

Comentarios

Es ObjRef una representación serializable de un objeto que extiende MarshalByRefObject (MBR). ObjRef Se usa para transferir una referencia de objeto a través de un AppDomain límite. La creación de para ObjRef un objeto se conoce como serialización. Puede crear un ObjRef objeto (serializar un MarshalByRefObject) explícitamente registrando el objeto MBR con la infraestructura de comunicación remota (vea RemotingConfiguration y RemotingServices.Marshal) o implícitamente pasando un objeto MBR como parámetro al llamar a un objeto remoto. La comunicación remota usa ObjRef objetos para almacenar y transmitir toda la información relevante sobre el MarshalByRefObject control remoto.

ObjRef Contiene información que describe la Type clase y del objeto que se serializa, su ubicación exacta y información relacionada con la comunicación sobre cómo llegar a la subdivisión de comunicación remota donde se encuentra el objeto.

Una vez que se serializa una clase que implementa MarshalByRefObject , el ObjRef que representa se transfiere a través de un canal a otro dominio de aplicación, posiblemente en otro proceso o equipo. ObjRef Cuando se deserializa (vea XML y serialización SOAP) en el dominio de aplicación de destino, se analiza para crear un proxy transparente para el objeto MBR remoto. Esta operación se conoce como desenlazante.

Un proxy transparente es un objeto que proporciona la ilusión de que el objeto real reside en el espacio del cliente. Para ello, reenvía las llamadas realizadas en él al objeto real mediante la infraestructura de comunicación remota. El proxy transparente se hospeda en sí mismo mediante una instancia de una clase en tiempo de ejecución administrada de tipo RealProxy. RealProxy implementa una parte de la funcionalidad necesaria para reenviar las operaciones desde el proxy transparente.

Un objeto proxy se puede usar sin tener en cuenta ninguna subdivisión de comunicación remota dentro de .AppDomain Las aplicaciones no necesitan distinguir entre las referencias de proxy y las referencias de objeto. Sin embargo, los proveedores de servicios que tratan problemas como la activación, la administración de la duración y las transacciones deben hacer tales diferencias.

Esta clase realiza una demanda de vínculo y una demanda de herencia en el nivel de clase. SecurityException Se produce una excepción cuando el llamador inmediato o la clase derivada no tienen permiso de infraestructura. Para obtener más información sobre las demandas de seguridad, consulte Demandas de vínculo y demandas de herencia.

Constructores

ObjRef()

Inicializa una nueva instancia de la clase ObjRef con valores predeterminados.

ObjRef(MarshalByRefObject, Type)

Inicializa una nueva instancia de la clase ObjRef para hacer referencia a un MarshalByRefObject especificado de un Type dado.

ObjRef(SerializationInfo, StreamingContext)

Inicializa una nueva instancia de la clase ObjRef a partir de datos serializados.

Propiedades

ChannelInfo

Obtiene o establece el objeto IChannelInfo para ObjRef.

EnvoyInfo

Obtiene o establece el objeto IEnvoyInfo para ObjRef.

TypeInfo

Obtiene o establece IRemotingTypeInfo para el objeto que ObjRef describe.

URI

Obtiene o establece el identificador URI de la instancia de objeto especificada.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)

Rellena un objeto SerializationInfo especificado con los datos necesarios para serializar la instancia de ObjRef actual.

GetRealObject(StreamingContext)

Devuelve una referencia al objeto remoto que ObjRef describe.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsFromThisAppDomain()

Devuelve un valor booleano que indica si la instancia de ObjRef actual hace referencia a un objeto ubicado en el objeto AppDomain actual.

IsFromThisProcess()

Devuelve un valor booleano que indica si la instancia de ObjRef actual hace referencia a un objeto ubicado en el proceso actual.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Produto Versións
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Consulte también