ApplicationActivator 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供啟動基於清單的組裝的基底類別。
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 方法實作的行為:
檢查要啟用的外掛 是否 ActivationContext 與當前網域的 相符;若不符 ActivationContext ,則進入第二步。 否則,執行組合語言並回傳包裹在物件 handle 中的結果。
在新的 AppDomain. 以下步驟是利用 外ActivationArguments掛初始化新檔案AppDomain。
使用ActivationArguments包含外掛啟動上下文的物件建立一個新AppDomainSetup物件。
呼叫 方法 CreateInstanceHelper ,使用 該 AppDomainSetup 物件建立新域。
該 CreateInstanceHelper 方法呼叫 HostSecurityManager.DetermineApplicationTrust 該方法來取得 ApplicationTrust 外掛的物件。 如果屬性 IsApplicationTrustedToRun 返回
true,則執行該附加元件。 若未達成, CreateInstanceHelper 則會 PolicyException 拋出表示無法取得執行權限的 A。如果外掛被信任執行,則會為外掛建立並設定ActivationContext新AppDomain外掛,並載入並執行該外掛。
外掛啟用的結果會被包裹在物件 handle 中回傳。
自訂啟動器可依特定情境調整外掛的啟動方式。 例如,自訂啟用器可以找到現有 AppDomain 的啟用程式來啟用此附加元件,而不必每次都建立新網域。
以下步驟描述了在現有AppDomain中啟用外掛的自訂ApplicationActivator行為:
自訂啟動器會找到與被啟動外掛相同的 ActivationContext 網域。
如果 在過程中從未出現過,ActivationContext自訂啟用器會直接呼叫該CreateDomain方法,或將此活動委派給基底類別中的 ,CreateInstanceHelper為此ActivationContext建立新的AppDomain。
如果已有具有相同 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) |