Sdílet prostřednictvím


ApplicationActivator Třída

Definice

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ího DomainManager pro aplikaci založenou 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á ApplicationActivator instance třídy, do které jsou směrována všechna volání aktivace. Pro AppDomainManager aktuální AppDomain může pro tento účel poskytnout vlastní.ApplicationActivator Pokud není zadaný vlastní ApplicationActivator , vytvoří se ApplicationActivator výchozí instance.

Následující kroky popisují chování implementace výchozí CreateInstance metody:

  1. Zkontroluje, jestli ActivationContext se aktivovaný doplněk shoduje ActivationContext s aktuální doménou. Pokud ne, přejde ke kroku 2. V opačném případě spustí sestavení a vrátí výsledek zabalený do úchytu objektu.

  2. Aktivuje doplněk v novém AppDomain. Pomocí následujících kroků inicializujete nový AppDomainActivationArguments pomocí příkazu pro doplněk .

    1. Vytvoří nový AppDomainSetup objekt pomocí objektu ActivationArguments obsahujícího kontext aktivace doplňku.

    2. Zavolá metodu CreateInstanceHelper k vytvoření nové domény pomocí objektu AppDomainSetup .

    3. Metoda CreateInstanceHelper volá metodu HostSecurityManager.DetermineApplicationTrust k získání objektu ApplicationTrust pro doplněk. Pokud vlastnost IsApplicationTrustedToRun vrátí true, doplněk se spustí. Pokud ne, CreateInstanceHelper vyvolá upozornění PolicyException , že nebylo možné získat oprávnění ke spuštění.

    4. Pokud je spuštění doplňku důvěryhodné, vytvoří se a nakonfiguruje ActivationContext nový AppDomain doplněk a doplněk se načte a spustí.

    5. Vrátí se výsledek aktivace doplňku zabalený do úchytu objektu.

Vlastní aktivátor může aktivaci doplňku přizpůsobit konkrétním okolnostem. Například vlastní aktivátor může najít existující AppDomain , který aktivuje tento doplněk, místo aby pokaždé vytvářel novou doménu.

Následující kroky popisují chování vlastního ApplicationActivator , který aktivuje doplněk v existujícím AppDomain:

  1. Vlastní aktivátor najde doménu, která má stejnou ActivationContext doménu jako aktivovaný doplněk.

  2. ActivationContext Pokud se v procesu nikdy předtím nespatřil, vlastní aktivátor pro to ActivationContext vytvoří nový AppDomain voláním CreateDomain metody přímo nebo delegováním této aktivity na CreateInstanceHelper v základní třídě.

  3. Pokud existuje doména se stejnou ActivationContextdoménou , může aktivátor delegovat CreateInstance volání metody na ApplicationActivator v cílové doméně. Všimněte si, že se jedná o volání z více domén do objektu ApplicationActivator , který se nachází v cílovém AppDomainobjektu .

Konstruktory

ApplicationActivator()

Inicializuje novou instanci ApplicationActivator třídy .

Metody

CreateInstance(ActivationContext)

Vytvoří instanci aplikace, která má být aktivována, pomocí zadaného aktivačního kontextu.

CreateInstance(ActivationContext, String[])

Vytvoří instanci aplikace, která se má aktivovat, pomocí zadaného kontextu aktivace a vlastních dat aktivace.

CreateInstanceHelper(AppDomainSetup)

Vytvoří instanci aplikace pomocí zadaného AppDomainSetup objektu.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro