ApplicationActivator Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die Basisklasse für die Aktivierung manifestbasierter Assemblys bereit.
public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
- Vererbung
-
ApplicationActivator
- Attribute
Beispiele
Das folgende Codebeispiel zeigt, wie Ein ApplicationActivator Objekt aus dem aktuellen DomainManager für eine manifestbasierte Anwendung abgerufen wird.
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
Hinweise
Es gibt eine einzelne festgelegte Instanz der ApplicationActivator Klasse in jedem AppDomain , an die alle Aktivierungsaufrufe weitergeleitet werden. Der AppDomainManager für den aktuellen AppDomain Zweck kann einen eigenen Benutzerdefinierten ApplicationActivator für diesen Zweck bereitstellen. Wenn keine Benutzerdefinierte ApplicationActivator bereitgestellt wird, wird eine Instanz des Standardwerts ApplicationActivator erstellt.
Die folgenden Schritte beschreiben das Verhalten der Standardmethodenimplementierung CreateInstance :
Überprüft, ob das ActivationContext zu aktivierende Add-In mit der ActivationContext aktuellen Domäne übereinstimmt. Andernfalls fahren Sie mit Schritt 2 fort. Andernfalls wird die Assembly ausgeführt und das Ergebnis zurückgegeben, das in ein Objekthandle eingeschlossen ist.
Aktiviert das Add-In in einem neuen AppDomain. Die folgenden Schritte werden ausgeführt, um eine neue AppDomain Verwendung des ActivationArguments Add-Ins zu initialisieren.
Erstellt ein neues AppDomainSetup Objekt mithilfe eines ActivationArguments Objekts, das den Aktivierungskontext für das Add-In enthält.
Ruft die CreateInstanceHelper Methode auf, um eine neue Domäne mithilfe des AppDomainSetup Objekts zu erstellen.
Die CreateInstanceHelper Methode ruft die HostSecurityManager.DetermineApplicationTrust Methode auf, um ein ApplicationTrust Objekt für das Add-In zu erwerben. Wenn die IsApplicationTrustedToRun Eigenschaft zurückgegeben
truewird, wird das Add-In ausgeführt. Andernfalls wird ein PolicyException Hinweis darauf ausgelöst, CreateInstanceHelper dass die Ausführungsberechtigung nicht erworben werden konnte.Wenn das Add-In als vertrauenswürdig eingestuft wird, wird ein neues AppDomain erstellt und für das ActivationContext Add-In konfiguriert, und das Add-In wird geladen und ausgeführt.
Das Ergebnis der Aktivierung des Add-Ins wird zurückgegeben, umschlossen in ein Objekthandle.
Ein benutzerdefinierter Aktivator kann die Aktivierung eines Add-Ins auf einen bestimmten Satz von Umständen anpassen. Beispielsweise könnte ein benutzerdefinierter Aktivator ein vorhandenes AppDomain Add-In finden, anstatt jedes Mal eine neue Domäne zu erstellen.
Die folgenden Schritte beschreiben das Verhalten eines Benutzerdefinierten ApplicationActivator , das ein Add-In in einem vorhandenen AppDomainAdd-In aktiviert:
Der benutzerdefinierte Aktivator findet eine Domäne, die mit dem add-in identisch ActivationContext ist, das aktiviert wird.
Wenn die ActivationContext zuvor noch nie im Prozess gesehen wurde, erstellt der benutzerdefinierte Aktivator hierfür eine neue AppDomainActivationContext , indem die CreateDomain Methode direkt aufgerufen oder diese Aktivität in die CreateInstanceHelper Basisklasse delegiert wird.
Wenn eine Domäne mit demselben ActivationContextvorhanden ist, kann der Aktivator den CreateInstance Methodenaufruf an die ApplicationActivator Zieldomäne delegieren. Beachten Sie, dass es sich hierbei um einen domänenübergreifenden Aufruf eines ApplicationActivator Domänenaufrufs handelt, der sich im Ziel AppDomainbefindet.
Konstruktoren
| Name | Beschreibung |
|---|---|
| ApplicationActivator() |
Initialisiert eine neue Instanz der ApplicationActivator-Klasse. |
Methoden
| Name | Beschreibung |
|---|---|
| CreateInstance(ActivationContext, String[]) |
Erstellt eine Instanz der zu aktivierenden Anwendung mithilfe des angegebenen Aktivierungskontexts und benutzerdefinierter Aktivierungsdaten. |
| CreateInstance(ActivationContext) |
Erstellt eine Instanz der zu aktivierenden Anwendung mithilfe des angegebenen Aktivierungskontexts. |
| CreateInstanceHelper(AppDomainSetup) |
Erstellt eine Instanz einer Anwendung mithilfe des angegebenen AppDomainSetup Objekts. |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |