Exporter (0) Imprimer
Développer tout

ApplicationActivator, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Fournit la classe de base pour l'activation d'assemblys basés sur un manifeste.

Espace de noms : System.Runtime.Hosting
Assembly : mscorlib (dans mscorlib.dll)

[ComVisibleAttribute(true)] 
public class ApplicationActivator
/** @attribute ComVisibleAttribute(true) */ 
public class ApplicationActivator
ComVisibleAttribute(true) 
public class ApplicationActivator

Il existe une instance désignée unique de la classe ApplicationActivator dans chaque AppDomain vers lequel tous les appels d'activation sont routés. AppDomainManager du AppDomain actuel peut fournir son propre ApplicationActivator personnalisé à cette fin. Si aucun ApplicationActivator personnalisé n'est fourni, une instance du ApplicationActivator par défaut est créée.

Les étapes suivantes décrivent le comportement de l'implémentation de la méthode CreateInstance par défaut :

  1. Vérifie si ActivationContext du complément à activer correspond au ActivationContext du domaine actuel ; si ce n'est pas le cas, passe à l'étape 2. Sinon, exécute l'assembly et retourne le résultat encapsulé dans un handle d'objet.

  2. Active le complément dans un nouveau AppDomain. Les étapes suivantes sont exécutées afin d'initialiser un nouveau AppDomain à l'aide de ActivationArguments pour le complément.

    1. Crée un objet AppDomainSetup à l'aide d'un objet ActivationArguments contenant le contexte d'activation du complément.

    2. Appelle la méthode CreateInstanceHelper pour créer un domaine à l'aide de l'objet AppDomainSetup.

    3. La méthode CreateInstanceHelper appelle la méthode HostSecurityManager.DetermineApplicationTrust afin d'acquérir un objet ApplicationTrust pour le complément. Si la propriété IsApplicationTrustedToRun retourne la valeur true, le complément est exécuté. Sinon, CreateInstanceHelper lève PolicyException indiquant que l'autorisation d'exécution n'a pas pu être acquise.

    4. Si l'exécution du complément est approuvée, AppDomain est créé et configuré pour ActivationContext du complément, et le complément est chargé ainsi qu'exécuté.

    5. Le résultat de l'activation du complément est retourné, encapsulé dans un handle d'objet.

Un activateur personnalisé peut adapter l'activation d'un complément à des circonstances particulières. Par exemple, un activateur personnalisé peut rechercher un AppDomain existant pour activer ce complément plutôt que de créer chaque fois un domaine.

Les étapes suivantes décrivent le comportement d'un ApplicationActivator personnalisé qui active un complément dans un AppDomain existant :

  1. L'activateur personnalisé recherche un domaine possédant le même ActivationContext que le complément activé.

  2. Si ActivationContext n'a jamais été rencontré auparavant dans le processus, l'activateur personnalisé crée un AppDomain pour ce ActivationContext en appelant directement la méthode CreateDomain, ou en déléguant cette activité à CreateInstanceHelper dans la classe de base.

  3. S'il existe un domaine possédant le même ActivationContext, l'activateur peut déléguer l'appel à la méthode CreateInstance au ApplicationActivator du domaine cible. Notez qu'il s'agirait alors d'un appel interdomaine à un ApplicationActivator résidant dans le AppDomain cible.

L'exemple de code suivant montre comment obtenir un objet ApplicationActivator du DomainManager actuel pour une application basée sur un manifeste.

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();
        }
    }
}

System.Object
  System.Runtime.Hosting.ApplicationActivator

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft