ApplicationActivator Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Fournit la classe de base pour l'activation d'assemblys basés sur un manifeste.
public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
- Héritage
-
ApplicationActivator
- Attributs
Exemples
L’exemple de code suivant montre comment obtenir un ApplicationActivator objet à partir du actif DomainManager 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.Runtime.Hosting;
namespace ActivationContextSample
{
public class Program : MarshalByRefObject
{
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();
}
public void Run()
{
Main(new string[] { });
Console.ReadLine();
}
}
}
Imports System.Collections
Imports System.Text
Imports System.Security.Policy
Imports System.Reflection
Imports System.Security
Imports System.Security.Permissions
Imports System.Runtime.Hosting
Public Class Program
Inherits MarshalByRefObject
<SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy:=True)> _
Public Shared Sub Main(ByVal args() As String)
' Get the AppDomainManager from the current domain.
Dim domainMgr As AppDomainManager = AppDomain.CurrentDomain.DomainManager
' Get the ApplicationActivator from the AppDomainManager.
Dim appActivator As ApplicationActivator = domainMgr.ApplicationActivator
Console.WriteLine("Assembly qualified name from the application activator.")
Console.WriteLine(appActivator.GetType().AssemblyQualifiedName)
Dim ac As ActivationContext = AppDomain.CurrentDomain.ActivationContext
' Get the ActivationArguments from the SetupInformation property of the domain.
Dim activationArgs As ActivationArguments = AppDomain.CurrentDomain.SetupInformation.ActivationArguments
' Get the ActivationContext from the ActivationArguments.
Dim actContext As ActivationContext = activationArgs.ActivationContext
Console.WriteLine("The ActivationContext.Form property value is: " + _
activationArgs.ActivationContext.Form.ToString())
Console.Read()
End Sub
<SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy:=True)> _
Public Sub Run()
Main(New String() {})
Console.ReadLine()
End Sub
End Class
Remarques
Il existe une seule instance désignée de la ApplicationActivator classe dans chacune AppDomain d’elles vers laquelle tous les appels d’activation sont routés. le AppDomainManager pour le actuel AppDomain peut fournir son propre personnalisé ApplicationActivator à cet effet. Si aucun personnalisé ApplicationActivator n’est fourni, une instance de la valeur par défaut ApplicationActivator est créée.
Les étapes suivantes décrivent le comportement de l’implémentation de la méthode par défaut CreateInstance :
Vérifie si le ActivationContext du complément à activer correspond ActivationContext au du domaine actuel ; si ce n’est pas le cas, passez à l’étape 2. Sinon, exécute l’assembly et retourne le résultat encapsulé dans un handle d’objet.
Active le complément dans un nouveau AppDomain. Les étapes suivantes sont effectuées pour initialiser un nouveau AppDomain à l’aide du ActivationArguments pour le complément.
Crée un AppDomainSetup objet à l’aide d’un ActivationArguments objet contenant le contexte d’activation du complément.
Appelle la CreateInstanceHelper méthode pour créer un domaine à l’aide de l’objet AppDomainSetup .
La CreateInstanceHelper méthode appelle la HostSecurityManager.DetermineApplicationTrust méthode pour acquérir un ApplicationTrust objet pour le complément. Si la IsApplicationTrustedToRun propriété retourne
true
, le complément est exécuté. Si ce n’est pas le cas, CreateInstanceHelper lève un PolicyException indiquant que l’autorisation d’exécution n’a pas pu être acquise.Si le complément est approuvé pour s’exécuter, un nouveau AppDomain est créé et configuré pour le ActivationContext du complément, et le complément est chargé et exécuté.
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 à un ensemble particulier de circonstances. Par exemple, un activateur personnalisé peut trouver un existant AppDomain pour activer ce complément au lieu de créer un domaine à chaque fois.
Les étapes suivantes décrivent le comportement d’un personnalisé ApplicationActivator qui active un complément dans un existant AppDomain:
L’activateur personnalisé trouve un domaine qui a le même ActivationContext que le complément en cours d’activation.
Si le ActivationContext n’a jamais été vu auparavant dans le processus, l’activateur personnalisé crée un nouveau AppDomain pour cela ActivationContext en appelant directement la CreateDomain méthode ou en déléguant cette activité à dans CreateInstanceHelper la classe de base.
S’il existe un domaine avec le même ActivationContext, l’activateur peut déléguer l’appel de méthode CreateInstance au ApplicationActivator dans le domaine cible. Notez qu’il s’agit d’un appel inter-domaines à un ApplicationActivator qui réside dans la cible AppDomain.
Constructeurs
ApplicationActivator() |
Initialise une nouvelle instance de la classe ApplicationActivator. |
Méthodes
CreateInstance(ActivationContext) |
Crée une instance de l'application à activer, à l'aide du contexte d'activation spécifié. |
CreateInstance(ActivationContext, String[]) |
Crée une instance de l’application à activer, à l’aide du contexte d’activation spécifié et des données d’activation personnalisées. |
CreateInstanceHelper(AppDomainSetup) |
Crée une instance d'une application à l'aide de l'objet AppDomainSetup spécifié. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |