共用方式為


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
屬性

範例

以下程式碼範例展示了如何從目前DomainManager取得ApplicationActivator基於清單的應用程式中的物件。

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

備註

每個AppDomain類別中有一個指定的實例ApplicationActivator,所有啟動呼叫都被路由到該類別。 AppDomainManager AppDomain電流可以為此目的提供專屬的客製化ApplicationActivator。 若未提供自訂 ApplicationActivator ,則會建立預設實 ApplicationActivator 例。

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

  1. 檢查要啟用的外掛 是否 ActivationContext 與當前網域的 相符;若不符 ActivationContext ,則進入第二步。 否則,執行組合語言並回傳包裹在物件 handle 中的結果。

  2. 在新的 AppDomain. 以下步驟是利用 外ActivationArguments掛初始化新檔案AppDomain

    1. 使用ActivationArguments包含外掛啟動上下文的物件建立一個新AppDomainSetup物件。

    2. 呼叫 方法 CreateInstanceHelper ,使用 該 AppDomainSetup 物件建立新域。

    3. CreateInstanceHelper 方法呼叫 HostSecurityManager.DetermineApplicationTrust 該方法來取得 ApplicationTrust 外掛的物件。 如果屬性 IsApplicationTrustedToRun 返回 true,則執行該附加元件。 若未達成, CreateInstanceHelper 則會 PolicyException 拋出表示無法取得執行權限的 A。

    4. 如果外掛被信任執行,則會為外掛建立並設定ActivationContextAppDomain外掛,並載入並執行該外掛。

    5. 外掛啟用的結果會被包裹在物件 handle 中回傳。

自訂啟動器可依特定情境調整外掛的啟動方式。 例如,自訂啟用器可以找到現有 AppDomain 的啟用程式來啟用此附加元件,而不必每次都建立新網域。

以下步驟描述了在現有AppDomain中啟用外掛的自訂ApplicationActivator行為:

  1. 自訂啟動器會找到與被啟動外掛相同的 ActivationContext 網域。

  2. 如果 在過程中從未出現過,ActivationContext自訂啟用器會直接呼叫該CreateDomain方法,或將此活動委派給基底類別中的 ,CreateInstanceHelper為此ActivationContext建立新的AppDomain

  3. 如果已有具有相同 ActivationContext的域,啟動器可將方法呼叫委派CreateInstance給目標域中的 。ApplicationActivator 請注意,這將是對位於目標AppDomain中的 的ApplicationActivator跨域呼叫。

建構函式

名稱 Description
ApplicationActivator()

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

方法

名稱 Description
CreateInstance(ActivationContext, String[])

利用指定的啟用上下文與自訂啟用資料,建立待啟用應用程式的實例。

CreateInstance(ActivationContext)

根據指定的啟動情境建立待啟用應用程式的實例。

CreateInstanceHelper(AppDomainSetup)

使用指定 AppDomainSetup 物件建立應用程式實例。

Equals(Object)

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

(繼承來源 Object)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

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

(繼承來源 Object)

適用於