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 de l’objet actuel 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 instance désignée unique de la ApplicationActivator classe dans laquelle AppDomain tous les appels d’activation sont routés. La AppDomainManager version actuelle AppDomain peut fournir sa propre personnalisée ApplicationActivator à cet effet. Si un personnalisé ApplicationActivator n’est pas 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 méthode par défaut CreateInstance :
Vérifie si le ActivationContext complément à activer correspond au ActivationContext domaine actuel ; sinon, passe à 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 une nouvelle AppDomain utilisation du ActivationArguments 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 une PolicyException indication 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 complément est créé et configuré pour le ActivationContext 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 élément existant AppDomain pour activer ce complément au lieu de créer un domaine à chaque fois.
Les étapes suivantes décrivent le comportement d’une personnalisée ApplicationActivator qui active un complément dans un complément existant AppDomain:
L’activateur personnalisé recherche un domaine qui a le même ActivationContext que le complément en cours d’activation.
Si le ActivationContext processus n’a jamais été vu précédemment, 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é à la CreateInstanceHelper classe de base.
S’il existe un domaine existant avec le même ActivationContextdomaine, l’activateur peut déléguer l’appel CreateInstance de méthode au ApplicationActivator domaine cible. Notez qu’il s’agit d’un appel inter-domaines à un ApplicationActivator qui réside dans la cible AppDomain.
Constructeurs
| Nom | Description |
|---|---|
| ApplicationActivator() |
Initialise une nouvelle instance de la classe ApplicationActivator. |
Méthodes
| Nom | Description |
|---|---|
| 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. |
| CreateInstance(ActivationContext) |
Crée une instance de l’application à activer à l’aide du contexte d’activation spécifié. |
| CreateInstanceHelper(AppDomainSetup) |
Crée une instance d’une application à l’aide de l’objet spécifié AppDomainSetup . |
| Equals(Object) |
Détermine si l’objet spécifié est égal à l’objet actuel. (Hérité de Object) |
| GetHashCode() |
Sert de fonction de hachage par défaut. (Hérité de Object) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |