Esta página foi útil?
Seus comentários sobre este conteúdo são importantes. Queremos saber sua opinião.
Comentários adicionais?
1500 caracteres restantes
Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe ObjectHandle

Quebra referências de objeto marshal-por-valor, permitindo que eles sejam retornados por meio de um caminho indireto.

System.Object
  System.MarshalByRefObject
    System.Runtime.Remoting.ObjectHandle

Namespace:  System.Runtime.Remoting
Assembly:  mscorlib (em mscorlib.dll)

[ClassInterfaceAttribute(ClassInterfaceType.AutoDual)]
[ComVisibleAttribute(true)]
public class ObjectHandle : MarshalByRefObject, 
	IObjectHandle

O tipo ObjectHandle expõe os membros a seguir.

  NomeDescrição
Método públicoObjectHandleInicializa uma instância da ObjectHandle classe, quebra automática de determinado objeto o.
Superior

  NomeDescrição
Método públicoCreateObjRefCria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject.)
Método públicoEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método protegidoFinalize Permite um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)
Método públicoGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoGetLifetimeService Recupera o objeto atual de serviço de vida útil que controla a diretiva de vida útil para esta instância. (Herdado de MarshalByRefObject.)
Método públicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoInitializeLifetimeServiceInicializa a concessão de vida útil do objeto empacotado. (Substitui MarshalByRefObject.InitializeLifetimeService().)
Método protegidoMemberwiseClone()Cria uma cópia superficial do Object atual. (Herdado de Object.)
Método protegidoMemberwiseClone(Boolean) Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject.)
Método públicoToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Método públicoUnwrapRetorna o objeto empacotado.
Superior

O ObjectHandle classe é usada para passar um objeto (em um estado disposto) entre vários domínios de aplicativo sem carregar os metadados para o objeto disposto em cada AppDomain através do qual o ObjectHandle viaja. Assim, o ObjectHandle classe dá ao controle de chamador de quando o Type do objeto remoto é carregado em um domínio.

O exemplo de código a seguir mostra como criar um objeto em outro AppDomaine recuperar um proxy para o objeto a partir de um ObjectHandle. Neste exemplo, você pode assumir que o código da MyType classe é compilado em um assembly chamado "ObjectHandleAssembly".


using System;
using System.Runtime.Remoting;


public class MyType : MarshalByRefObject {

   public MyType()  {
      Console.Write("Created an instance of MyType in an AppDomain with the ");
      Console.WriteLine("hash code {0}",AppDomain.CurrentDomain.GetHashCode());
      Console.WriteLine("");
   }

   public int GetAppDomainHashCode() {
      return AppDomain.CurrentDomain.GetHashCode();
   }
}


class Test {

   public static void Main() {

      Console.WriteLine("The hash code of the default AppDomain is {0}.", 
                        AppDomain.CurrentDomain.GetHashCode());
      Console.WriteLine("");

      // Creates another AppDomain.
      AppDomain domain = AppDomain.CreateDomain("AnotherDomain", 
                                                null, 
                                                (AppDomainSetup)null);

      // Creates an instance of MyType defined in the assembly called ObjectHandleAssembly.
      ObjectHandle obj = domain.CreateInstance("ObjectHandleAssembly", "MyType");

      // Unwrapps the proxy to the MyType object created in the other AppDomain.
      MyType testObj = (MyType)obj.Unwrap();

      if(RemotingServices.IsTransparentProxy(testObj))
         Console.WriteLine("The unwrapped object is a proxy.");
      else
         Console.WriteLine("The unwrapped object is not a proxy!");    

      Console.WriteLine("");
      Console.Write("Calling a method on the object located in an AppDomain with the hash code ");
      Console.WriteLine(testObj.GetAppDomainHashCode());
   }
}


.NET Framework

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft