ApplicationActivator Klass

Definition

Tillhandahåller basklassen för aktivering av manifestbaserade sammansättningar.

public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
Arv
ApplicationActivator
Attribut

Exempel

I följande kodexempel visas hur du hämtar ett ApplicationActivator objekt från aktuellt DomainManager för ett manifestbaserat program.

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

Kommentarer

Det finns en enda angiven instans av ApplicationActivator klassen i var och en AppDomain som alla aktiveringsanrop dirigeras till. AppDomainManager För den aktuella AppDomain kan ge sin egen anpassade ApplicationActivator för detta ändamål. Om en anpassad ApplicationActivator inte anges skapas en instans av standardinställningen ApplicationActivator .

Följande steg beskriver beteendet för standardmetodimplementeringen CreateInstance :

  1. Kontrollerar om tillägget ActivationContext som ska aktiveras matchar den ActivationContext aktuella domänen. Om inte fortsätter du till steg 2. Annars kör sammansättningen och returnerar resultatet omslutet i ett objekthandtag.

  2. Aktiverar tillägget i en ny AppDomain. Följande steg vidtas för att initiera en ny AppDomain med hjälp av ActivationArguments för tillägget.

    1. Skapar ett nytt AppDomainSetup objekt med hjälp av ett ActivationArguments objekt som innehåller aktiveringskontexten för tillägget.

    2. CreateInstanceHelper Anropar metoden för att skapa en ny domän med hjälp av AppDomainSetup objektet.

    3. Metoden CreateInstanceHelper anropar HostSecurityManager.DetermineApplicationTrust metoden för att hämta ett ApplicationTrust objekt för tillägget. Om egenskapen IsApplicationTrustedToRun returnerar truekörs tillägget. Om inte, CreateInstanceHelper genererar en PolicyException som anger att körningsbehörighet inte kunde hämtas.

    4. Om tillägget är betrott att köras skapas och konfigureras ett nytt AppDomain för ActivationContext tillägget och tillägget läses in och körs.

    5. Resultatet av aktiveringen av tillägget returneras, omslutet i ett objekthandtag.

En anpassad aktivator kan anpassa aktiveringen av ett tillägg till en viss uppsättning omständigheter. En anpassad aktivator kan till exempel hitta en befintlig AppDomain för att aktivera det här tillägget i stället för att skapa en ny domän varje gång.

Följande steg beskriver beteendet för en anpassad ApplicationActivator som aktiverar ett tillägg i en befintlig AppDomain:

  1. Den anpassade aktivatorn hittar en domän som har samma ActivationContext som tillägget som aktiveras.

  2. Om den ActivationContext aldrig har setts tidigare i processen skapar den anpassade aktivatorn en ny AppDomain för detta ActivationContext genom att anropa metoden direkt eller delegera den CreateDomain här aktiviteten till CreateInstanceHelper i basklassen.

  3. Om det finns en befintlig domän med samma ActivationContextkan aktivatorn delegera metodanropet CreateInstanceApplicationActivator till i måldomänen. Observera att detta skulle vara ett korsdomänanrop till ett ApplicationActivator som finns i målet AppDomain.

Konstruktorer

Name Description
ApplicationActivator()

Initierar en ny instans av ApplicationActivator klassen.

Metoder

Name Description
CreateInstance(ActivationContext, String[])

Skapar en instans av programmet som ska aktiveras med den angivna aktiveringskontexten och anpassade aktiveringsdata.

CreateInstance(ActivationContext)

Skapar en instans av programmet som ska aktiveras med den angivna aktiveringskontexten.

CreateInstanceHelper(AppDomainSetup)

Skapar en instans av ett program med det angivna AppDomainSetup objektet.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Gäller för