Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe ApplicationActivator

 

Fornece a classe base para a ativação baseada em manifesto assemblies.

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

System.Object
  System.Runtime.Hosting.ApplicationActivator

[ComVisibleAttribute(true)]
public class ApplicationActivator

NomeDescrição
System_CAPS_pubmethodApplicationActivator()

Inicializa uma nova instância da classe ApplicationActivator.

NomeDescrição
System_CAPS_pubmethodCreateInstance(ActivationContext)

Cria uma instância do aplicativo a ser ativado, usando o contexto de ativação especificado.

System_CAPS_pubmethodCreateInstance(ActivationContext, String[])

Cria uma instância do aplicativo a ser ativado, usando o contexto de ativação especificado e os dados de ativação personalizado.

System_CAPS_protmethodSystem_CAPS_staticCreateInstanceHelper(AppDomainSetup)

Cria uma instância de um aplicativo usando especificado AppDomainSetup objeto.

System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (Herdado de Object.)

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_pubmethodToString()

Retorna uma string que representa o objeto atual.(Herdado de Object.)

Há uma única instância designada do ApplicationActivator classe em cada AppDomain para que a ativação todas as chamadas são encaminhadas. O AppDomainManager atual AppDomain pode fornecer seu próprio custom ApplicationActivator para essa finalidade. Se um personalizado ApplicationActivator não for fornecido, uma instância padrão do ApplicationActivator é criado.

As etapas a seguir descrevem o comportamento padrão do CreateInstance implementação do método:

  1. Verifica se o ActivationContext do suplemento para ser ativado corresponde a ActivationContext do atual domínio; caso contrário, continua a etapa 2. Caso contrário, o assembly é executado e retorna o resultado encapsulado em um identificador de objeto.

  2. Ativa o suplemento em um novo AppDomain. As seguintes etapas são executadas para inicializar um novo AppDomain usando o ActivationArguments para o suplemento.

    1. Cria um novo AppDomainSetup objeto usando um ActivationArguments objeto que contém o contexto de ativação para o suplemento.

    2. Chamadas de CreateInstanceHelper método para criar um novo domínio usando o AppDomainSetup objeto.

    3. O CreateInstanceHelper chamadas de método de HostSecurityManager.DetermineApplicationTrust método para adquirir um ApplicationTrust objeto para o suplemento. Se o IsApplicationTrustedToRun propriedade retorna true, o suplemento é executado. Caso contrário, CreateInstanceHelper lança um PolicyException indicando que não foi possível obter permissão de execução.

    4. Se o suplemento é confiável para executar e um novo AppDomain é criado e configurado para o ActivationContext do add-in, e o suplemento é carregado e executado.

    5. O resultado da ativação do suplemento é retornado, encapsulado em um identificador de objeto.

Um ativador personalizado pode adaptar a ativação de um suplemento para um conjunto específico de circunstâncias. Por exemplo, um ativador personalizado localizou um existente AppDomain para ativar esse suplemento em vez de criar um novo domínio de cada vez.

As etapas a seguir descrevem o comportamento de um personalizado ApplicationActivator que ativa um suplemento em existente AppDomain:

  1. O ativador personalizado localiza um domínio que tenha o mesmo ActivationContext como o suplemento que está sendo ativado.

  2. Se o ActivationContext nunca foi visto antes do processo, o ativador personalizado cria um novo AppDomain desta ActivationContext chamando o CreateDomain método diretamente ou delegar essa atividade para o CreateInstanceHelper na classe base.

  3. Se houver um domínio existente com o mesmo ActivationContext, então o ativador pode delegar a CreateInstance chamada de método para o ApplicationActivator no domínio de destino. Observe que isso seria uma chamada entre domínios para um ApplicationActivator que reside no destino AppDomain.

O exemplo de código a seguir mostra como obter um ApplicationActivator objeto atuais DomainManager para um aplicativo baseado em manifesto.

using System;
using System.Collections;
using System.Text;
using System.Security.Policy;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using System.Runtime.Hosting;

namespace ActivationContextSample
{
    public class Program : MarshalByRefObject
    {
        [SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy=true)]
        public static void Main(string[] args)
        {
            // Get the AppDomainManager from the current domain.
            AppDomainManager domainMgr = AppDomain.CurrentDomain.DomainManager;
            // Get the ApplicationActivator from the AppDomainManager.
            ApplicationActivator appActivator = domainMgr.ApplicationActivator;
            Console.WriteLine("Assembly qualified name from the application activator.");
            Console.WriteLine(appActivator.GetType().AssemblyQualifiedName);
            // Get the ActivationArguments from the SetupInformation property of the domain.
            ActivationArguments activationArgs = AppDomain.CurrentDomain.SetupInformation.ActivationArguments;
            // Get the ActivationContext from the ActivationArguments.
            ActivationContext actContext = activationArgs.ActivationContext;
            Console.WriteLine("The ActivationContext.Form property value is: " +
                activationArgs.ActivationContext.Form);
            Console.Read();
        }
	[SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy=true)]
        public void Run()
        {
            Main(new string[] { });
            Console.ReadLine();
        }
    }
}

.NET Framework
Disponível desde 2.0

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

Retornar ao início
Mostrar: