ApplicationActivator Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Biedt de basisklasse voor de activering van op manifest gebaseerde assembly's.
public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
- Overname
-
ApplicationActivator
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een ApplicationActivator object ophaalt uit de huidige DomainManager versie voor een toepassing op basis van een manifest.
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
Opmerkingen
Er is één aangewezen instantie van de ApplicationActivator klasse waarin AppDomain alle activeringsoproepen worden gerouteerd. De AppDomainManager voor de huidige AppDomain kan hiervoor een eigen aangepaste ApplicationActivator functie bieden. Als er geen aangepaste ApplicationActivator gegevens worden opgegeven, wordt er een exemplaar van de standaardwaarde ApplicationActivator gemaakt.
In de volgende stappen wordt het gedrag van de standaardmethode-implementatie CreateInstance beschreven:
Controleert of de ActivationContext invoegtoepassing die moet worden geactiveerd overeenkomt met het ActivationContext huidige domein. Zo niet, gaat u verder met stap 2. Anders wordt de assembly uitgevoerd en wordt het resultaat geretourneerd dat in een objectgreep is verpakt.
Hiermee activeert u de invoegtoepassing in een nieuwe AppDomain. De volgende stappen worden uitgevoerd om een nieuw AppDomain exemplaar te initialiseren met behulp van de ActivationArguments invoegtoepassing.
Hiermee maakt u een nieuw AppDomainSetup object met behulp van een ActivationArguments object met de activeringscontext voor de invoegtoepassing.
Roept de CreateInstanceHelper methode aan om een nieuw domein te maken met behulp van het AppDomainSetup object.
Met CreateInstanceHelper de methode wordt de HostSecurityManager.DetermineApplicationTrust methode aangeroepen om een ApplicationTrust object voor de invoegtoepassing te verkrijgen. Als de IsApplicationTrustedToRun eigenschap wordt geretourneerd
true, wordt de invoegtoepassing uitgevoerd. Als dat niet het gevolg is, CreateInstanceHelper wordt er een PolicyException melding weergegeven dat de uitvoeringsmachtiging niet kan worden verkregen.Als de invoegtoepassing wordt vertrouwd om uit te voeren, wordt er een nieuwe AppDomain gemaakt en geconfigureerd voor de ActivationContext invoegtoepassing en wordt de invoegtoepassing geladen en uitgevoerd.
Het resultaat van de activering van de invoegtoepassing wordt geretourneerd, verpakt in een objectgreep.
Een aangepaste activator kan de activering van een invoegtoepassing aanpassen aan een bepaalde set omstandigheden. Een aangepaste activator kan bijvoorbeeld een bestaande AppDomain vinden om deze invoegtoepassing te activeren in plaats van elke keer een nieuw domein te maken.
In de volgende stappen wordt het gedrag beschreven van een aangepaste ApplicationActivator invoegtoepassing die een bestaande AppDomaininvoegtoepassing activeert:
De aangepaste activator zoekt een domein met hetzelfde ActivationContext domein als de invoegtoepassing die wordt geactiveerd.
Als de ActivationContext methode nog nooit eerder in het proces is gezien, maakt de aangepaste activator hiervoor een nieuwe AppDomainActivationContext door de CreateDomain methode rechtstreeks aan te roepen of deze activiteit aan de CreateInstanceHelper in de basisklasse te delegeren.
Als er een bestaand domein met hetzelfde ActivationContextis, kan de activator de methodeaanroep CreateInstance delegeren naar het ApplicationActivator doeldomein. Houd er rekening mee dat dit een aanroep tussen domeinen zou zijn naar een die ApplicationActivator zich in het doel AppDomainbevindt.
Constructors
| Name | Description |
|---|---|
| ApplicationActivator() |
Initialiseert een nieuw exemplaar van de ApplicationActivator klasse. |
Methoden
| Name | Description |
|---|---|
| CreateInstance(ActivationContext, String[]) |
Hiermee maakt u een exemplaar van de toepassing dat moet worden geactiveerd met behulp van de opgegeven activeringscontext en aangepaste activeringsgegevens. |
| CreateInstance(ActivationContext) |
Hiermee maakt u een exemplaar van de toepassing dat moet worden geactiveerd met behulp van de opgegeven activeringscontext. |
| CreateInstanceHelper(AppDomainSetup) |
Hiermee maakt u een exemplaar van een toepassing met behulp van het opgegeven AppDomainSetup object. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |