ApplicationActivator Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Udostępnia klasę bazową do aktywacji zestawów opartych na manifeście.
public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
- Dziedziczenie
-
ApplicationActivator
- Atrybuty
Przykłady
W poniższym przykładzie kodu pokazano, jak uzyskać ApplicationActivator obiekt z bieżącej DomainManager aplikacji opartej na manifeście.
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
Uwagi
Istnieje jedno wyznaczone wystąpienie ApplicationActivator klasy w każdym AppDomain z nich, do którego są kierowane wszystkie wywołania aktywacji. Element AppDomainManager dla bieżącego AppDomain może zapewnić własne niestandardowe ApplicationActivator do tego celu. Jeśli nie podano niestandardowego ApplicationActivator , zostanie utworzone wystąpienie domyślne ApplicationActivator .
W poniższych krokach opisano zachowanie implementacji domyślnej CreateInstance metody:
Sprawdza, czy ActivationContext dodatek do aktywowania jest zgodny ActivationContext z bieżącą domeną; jeśli nie, przechodzi do kroku 2. W przeciwnym razie wykonuje zestaw i zwraca wynik opakowany w uchwyt obiektu.
Aktywuje dodatek w nowym AppDomainpliku . Poniższe kroki są podejmowane w celu zainicjowania nowego AppDomain polecenia przy użyciu ActivationArguments polecenia dla dodatku.
Tworzy nowy AppDomainSetup obiekt przy użyciu ActivationArguments obiektu zawierającego kontekst aktywacji dodatku.
Wywołuje metodę CreateInstanceHelper , aby utworzyć nową domenę przy użyciu AppDomainSetup obiektu .
Metoda CreateInstanceHelper wywołuje metodę HostSecurityManager.DetermineApplicationTrust w celu uzyskania ApplicationTrust obiektu dodatku. IsApplicationTrustedToRun Jeśli właściwość zwróci
true
wartość , jest wykonywany dodatek. W przeciwnym razie zgłasza błąd PolicyException wskazujący, CreateInstanceHelper że nie można uzyskać uprawnienia do wykonywania.Jeśli dodatek jest zaufany do uruchomienia, AppDomain zostanie utworzony i skonfigurowany dla ActivationContext dodatku, a dodatek zostanie załadowany i wykonany.
Wynik aktywacji dodatku jest zwracany, opakowany w uchwyt obiektu.
Niestandardowy aktywator może dostosować aktywację dodatku do określonego zestawu okoliczności. Na przykład niestandardowy aktywator może znaleźć istniejący AppDomain element, aby aktywować ten dodatek zamiast tworzyć nową domenę za każdym razem.
W poniższych krokach opisano zachowanie niestandardowego ApplicationActivator , które aktywuje dodatek w istniejącym AppDomainprogramie :
Niestandardowy aktywator znajduje domenę, która ma ten sam ActivationContext dodatek, który jest aktywowany.
ActivationContext Jeśli element nigdy wcześniej nie był widziany w procesie, niestandardowy aktywator tworzy dla tego ActivationContext element nowyAppDomain, wywołując CreateDomain metodę bezpośrednio lub delegując to działanie do CreateInstanceHelper klasy bazowej.
Jeśli istnieje domena z tą samą ActivationContextdomeną , aktywator może delegować CreateInstance wywołanie metody do ApplicationActivator domeny docelowej. Należy pamiętać, że byłoby to wywołanie międzydomenowe, ApplicationActivator które znajduje się w obiekcie docelowym AppDomain.
Konstruktory
ApplicationActivator() |
Inicjuje nowe wystąpienie klasy ApplicationActivator. |
Metody
CreateInstance(ActivationContext) |
Tworzy wystąpienie aplikacji do aktywowania przy użyciu określonego kontekstu aktywacji. |
CreateInstance(ActivationContext, String[]) |
Tworzy wystąpienie aplikacji do aktywowania przy użyciu określonego kontekstu aktywacji i niestandardowych danych aktywacji. |
CreateInstanceHelper(AppDomainSetup) |
Tworzy wystąpienie aplikacji przy użyciu określonego AppDomainSetup obiektu. |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |