ApplicationActivator Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Poskytuje základní třídu pro aktivaci sestavení založených na manifestu.
public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
- Dědičnost
-
ApplicationActivator
- Atributy
Příklady
Následující příklad kódu ukazuje, jak získat ApplicationActivator objekt z aktuální DomainManager aplikace založené na manifestu.
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
Poznámky
V každé AppDomain z nich je jedna určená instance ApplicationActivator třídy, do které jsou směrována všechna aktivační volání. Pro AppDomainManager tento AppDomain účel může aktuální nastavení poskytnout vlastní.ApplicationActivator ApplicationActivator Pokud vlastní není zadaný, vytvoří se instance výchozího nastaveníApplicationActivator.
Následující kroky popisují chování výchozí CreateInstance implementace metody:
Zkontroluje, jestli ActivationContext se doplněk, který se má aktivovat, odpovídá ActivationContext aktuální doméně. Pokud ne, přejde ke kroku 2. V opačném případě spustí sestavení a vrátí výsledek zabalený v popisovači objektu.
Aktivuje doplněk v novém AppDomainsouboru . Následující kroky jsou potřeba k inicializaci nového AppDomain doplňku pomocí doplňku ActivationArguments .
Vytvoří nový AppDomainSetup objekt pomocí objektu ActivationArguments obsahujícího kontext aktivace doplňku.
Volá metodu CreateInstanceHelper pro vytvoření nové domény pomocí objektu AppDomainSetup .
Metoda CreateInstanceHelper volá metodu HostSecurityManager.DetermineApplicationTrust pro získání ApplicationTrust objektu pro doplněk. Pokud se IsApplicationTrustedToRun tato vlastnost vrátí
true, spustí se doplněk. Pokud ne, vyvolá PolicyException upozornění, CreateInstanceHelper že se nepodařilo získat oprávnění ke spuštění.Pokud je doplněk důvěryhodný pro spuštění, vytvoří se nový AppDomain a nakonfigurovaný pro ActivationContext doplněk a doplněk se načte a spustí se.
Vrátí se výsledek aktivace doplňku zabaleného do popisovače objektu.
Vlastní aktivátor může přizpůsobit aktivaci doplňku konkrétní sadě okolností. Například vlastní aktivátor může najít existující AppDomain , aby tento doplněk aktivoval, místo aby pokaždé vytvářel novou doménu.
Následující kroky popisují chování vlastního ApplicationActivator doplňku, který aktivuje existující AppDomaindoplněk:
Vlastní aktivátor najde doménu, která má stejnou ActivationContext doménu jako aktivovaný doplněk.
Pokud v ActivationContext procesu nikdy nebyl vidět, vlastní aktivátor pro to ActivationContext vytvoří nový AppDomain voláním CreateDomain metody přímo nebo delegováním této aktivity do CreateInstanceHelper základní třídy.
Pokud existuje existující doména se stejnou ActivationContextdoménou, může aktivátor delegovat CreateInstance volání metody do ApplicationActivator cílové domény. Všimněte si, že se jedná o volání mezi doménami, ApplicationActivator které se nachází v cíli AppDomain.
Konstruktory
| Name | Description |
|---|---|
| ApplicationActivator() |
Inicializuje novou instanci ApplicationActivator třídy. |
Metody
| Name | Description |
|---|---|
| CreateInstance(ActivationContext, String[]) |
Vytvoří instanci aplikace, která se má aktivovat, pomocí zadaného kontextu aktivace a vlastních aktivačních dat. |
| CreateInstance(ActivationContext) |
Vytvoří instanci aplikace, která se má aktivovat, pomocí zadaného kontextu aktivace. |
| CreateInstanceHelper(AppDomainSetup) |
Vytvoří instanci aplikace pomocí zadaného AppDomainSetup objektu. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |