Classe ApplicationActivator

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

System.Object
  System.Runtime.Hosting.ApplicationActivator

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

[ComVisibleAttribute(true)]
public class ApplicationActivator

O tipo ApplicationActivator expõe os membros a seguir.

  NomeDescrição
Método públicoApplicationActivatorInicializa uma nova instância da classe ApplicationActivator.
Superior

  NomeDescrição
Método públicoCreateInstance(ActivationContext)Cria uma instância do aplicativo para ser ativado, usando o contexto de ativação especificado.
Método públicoCreateInstance(ActivationContext, String[])Cria uma instância do aplicativo para ser ativado, usando o contexto de ativação especificado e os dados de ativação personalizado.
Método protegidoMembro estáticoCreateInstanceHelperCria uma instância de um aplicativo usando o especificado AppDomainSetup objeto.
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úblicoGetType Obtém o Type da instância atual. (Herdado de Object.)
Método protegidoMemberwiseCloneCria uma cópia superficial do Object atual. (Herdado de Object.)
Método públicoToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

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

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

  1. Verifica se o ActivationContext do add-in para ser ativadas correspondências a ActivationContext do domínio atual; Se não for, prossegue para a etapa 2. Caso contrário, executa o assembly e retorna o resultado empacotado em um identificador de objeto.

  2. Ativa o add-in em uma nova AppDomain. As seguintes etapas são seguidas para inicializar um novo AppDomain usando o ActivationArguments para o suplemento.

    1. Cria um novo AppDomainSetup de 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 o objeto para o suplemento. Se a IsApplicationTrustedToRun propriedade retornará true, o add-in é executado. Caso contrário, CreateInstanceHelper lança um PolicyException indicando que a permissão de execução não pôde ser adquirido.

    4. Se o suplemento é confiável para execução, em seguida, uma nova AppDomain é criado e configurado para o ActivationContext do add-in, e o suplemento é carregado e executado.

    5. O resultado da ativação do add-in é retornado, empacotada em um identificador de objeto.

Um ativador personalizado pode adaptar a ativação de um add-in para um determinado conjunto de circunstâncias. Por exemplo, um personalizado activator localizou uma existente AppDomain para ativar este 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 add-in em existente AppDomain:

  1. O activator personalizado localiza um domínio que tenha o mesmo ActivationContext como o add-in que está sendo ativado.

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

  3. Se não houver um domínio existente com o mesmo ActivationContext, e em seguida, o activator 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 a partir do atual DomainManager para um aplicativo baseado no 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

Com suporte em: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.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.
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft