Aracılığıyla paylaş


ApplicationActivator Sınıf

Tanım

Bildirim tabanlı derlemelerin etkinleştirilmesi için temel sınıfı sağlar.

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

Örnekler

Aşağıdaki kod örneğinde, bildirim tabanlı bir ApplicationActivator uygulama için geçerli DomainManager nesnenin nasıl alındığı gösterilmektedir.

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

Açıklamalar

Her AppDomain birinde tüm etkinleştirme çağrılarının yönlendirildiği sınıfın ApplicationActivator belirlenmiş tek bir örneği vardır. AppDomainManager geçerli AppDomain için bu amaç için kendi özel ApplicationActivator sağlayabilir. Özel ApplicationActivator bir sağlanmadıysa, varsayılanın ApplicationActivator bir örneği oluşturulur.

Aşağıdaki adımlarda varsayılan CreateInstance yöntem uygulamasının davranışı açıklanmaktadır:

  1. Etkinleştirilecek eklentinin geçerli etki alanıyla ActivationContext eşleşip ActivationContext eşleşmediğini denetler; eşleşmiyorsa 2. adıma geçer. Aksi takdirde, derlemeyi yürütür ve bir nesne tutamacında sarmalanan sonucu döndürür.

  2. Eklentiyi yeni AppDomainbir sürümünde etkinleştirir. Eklenti için öğesini kullanarak ActivationArguments yeni AppDomain bir başlatma için aşağıdaki adımlar gerçekleştirilir.

    1. Eklentinin etkinleştirme bağlamını içeren bir nesne kullanarak yeni AppDomainSetup bir ActivationArguments nesne oluşturur.

    2. CreateInstanceHelper nesnesini kullanarak AppDomainSetup yeni bir etki alanı oluşturmak için yöntemini çağırır.

    3. CreateInstanceHelper yöntemi, eklenti için bir ApplicationTrust nesne almak üzere yöntemini çağırırHostSecurityManager.DetermineApplicationTrust. IsApplicationTrustedToRun özelliği döndürürsetrue, eklenti yürütülür. Aksi takdirde, CreateInstanceHelper yürütme izninin alınamadığını belirten bir PolicyException oluşturur.

    4. Eklentinin çalıştırılmasına güveniliyorsa, eklenti için ActivationContext bir yeni AppDomain oluşturulur ve yapılandırılır ve eklenti yüklenir ve yürütülür.

    5. Eklentinin etkinleştirilmesinin sonucu döndürülür ve bir nesne tutamacında sarmalanır.

Özel bir etkinleştirici, eklentinin etkinleştirilmesini belirli bir durum kümesine göre uyarlayabilir. Örneğin, özel bir etkinleştirici her seferinde yeni bir etki alanı oluşturmak yerine bu eklentiyi etkinleştirmek için mevcut AppDomain bir eklentiyi bulabilir.

Aşağıdaki adımlar, mevcut AppDomainbir eklentiyi etkinleştiren bir özel ApplicationActivator özelliğin davranışını açıklar:

  1. Özel etkinleştirici, etkinleştirilmekte olan eklentiyle aynı ActivationContext etki alanını bulur.

  2. ActivationContext işleminde daha önce hiç görülmediyse, özel etkinleştirici yöntemi doğrudan çağırarak CreateDomain veya bu etkinliği CreateInstanceHelper temel sınıfta temsilci olarak vererek bunun ActivationContext için yeni AppDomain bir oluşturur.

  3. aynı ActivationContextolan bir etki alanı varsa, etkinleştirici hedef etki alanındaki yöntemi çağrısına ApplicationActivator temsilci CreateInstance atayabilir. Bunun hedefte AppDomainbulunan bir ApplicationActivator etki alanları arası çağrısı olacağını unutmayın.

Oluşturucular

ApplicationActivator()

ApplicationActivator sınıfının yeni bir örneğini başlatır.

Yöntemler

CreateInstance(ActivationContext)

Belirtilen etkinleştirme bağlamını kullanarak etkinleştirilecek uygulamanın bir örneğini oluşturur.

CreateInstance(ActivationContext, String[])

Belirtilen etkinleştirme bağlamını ve özel etkinleştirme verilerini kullanarak etkinleştirilecek uygulamanın bir örneğini oluşturur.

CreateInstanceHelper(AppDomainSetup)

Belirtilen AppDomainSetup nesneyi kullanarak bir uygulamanın örneğini oluşturur.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır