ApplicationActivator 類別

定義

為資訊清單架構之組件的啟動過程提供基底類別。

public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
繼承
ApplicationActivator
屬性

範例

下列程式碼範例示範如何 ApplicationActivator 從目前 DomainManager 取得資訊清單型應用程式的 物件。

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

備註

每個類別都有一個指定的實例, ApplicationActivator 所有 AppDomain 啟用呼叫都會路由傳送至其中。 AppDomainManager目前 AppDomain 的 可以針對此目的提供自己的自訂 ApplicationActivator 。 如果未提供自訂 ApplicationActivator ,則會建立預設值 ApplicationActivator 的實例。

下列步驟描述預設 CreateInstance 方法實作的行為:

  1. 檢查要啟動 ActivationContext 之增益集的 是否符合 ActivationContext 目前網域的 ;如果沒有,請繼續進行步驟 2。 否則,會執行元件,並傳回包裝在物件控制碼中的結果。

  2. 在新的 AppDomain 中啟動增益集。 下列步驟會使用 增益集的 初始化新的 AppDomainActivationArguments

    1. 使用 ActivationArguments 包含增益集啟用內容的 物件,建立新的 AppDomainSetup 物件。

    2. CreateInstanceHelper呼叫 方法,以使用 AppDomainSetup 物件建立新的定義域。

    3. 方法 CreateInstanceHelperHostSecurityManager.DetermineApplicationTrust 呼叫 方法來取得 ApplicationTrust 增益集的物件。 IsApplicationTrustedToRun如果 屬性傳 true 回 ,則會執行增益集。 如果沒有, CreateInstanceHelper 則會 PolicyException 擲回 ,指出無法取得執行許可權。

    4. 如果增益集信任執行,則會為 ActivationContext 增益集的 建立並設定新的 AppDomain ,然後增益集會載入並執行。

    5. 增益集啟用的結果會傳回,包裝在物件控制碼中。

自訂啟動器可以針對一組特定情況量身打造增益集的啟用。 例如,自訂啟動器可能會找到現有的 AppDomain 來啟用此增益集,而不是每次建立新的網域。

下列步驟描述在現有 AppDomain 中啟動增益集的自訂 ApplicationActivator 行為:

  1. 自訂啟動程式會尋找與所啟動增益集相同的 ActivationContext 網域。

  2. ActivationContext如果 之前從未在進程中看到 ,則自訂啟動器會直接呼叫 CreateDomain 方法,或將這個活動委派給 CreateInstanceHelper 基類中的 ,為這個 ActivationContext 建立新的 AppDomain

  3. 如果有具有相同 的現有網域 ActivationContext ,則啟動程式可以將方法呼叫委派 CreateInstanceApplicationActivator 目標網域中的 。 請注意,這會是目標 中之 的 AppDomain 跨網域呼叫 ApplicationActivator

建構函式

ApplicationActivator()

初始化 ApplicationActivator 類別的新執行個體。

方法

CreateInstance(ActivationContext)

使用指定的啟動內容,建立要啟動之應用程式的執行個體。

CreateInstance(ActivationContext, String[])

使用指定的啟用內容和自訂啟用資料,建立要啟動之應用程式的實例。

CreateInstanceHelper(AppDomainSetup)

使用指定的 AppDomainSetup 物件,建立應用程式的執行個體。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

適用於