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
- 屬性
範例
下列程式碼範例示範如何 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 方法實作的行為:
檢查要啟動 ActivationContext 之增益集的 是否符合 ActivationContext 目前網域的 ;如果沒有,請繼續進行步驟 2。 否則,會執行元件,並傳回包裝在物件控制碼中的結果。
在新的 AppDomain 中啟動增益集。 下列步驟會使用 增益集的 初始化新的 AppDomainActivationArguments 。
使用 ActivationArguments 包含增益集啟用內容的 物件,建立新的 AppDomainSetup 物件。
CreateInstanceHelper呼叫 方法,以使用 AppDomainSetup 物件建立新的定義域。
方法 CreateInstanceHelper 會 HostSecurityManager.DetermineApplicationTrust 呼叫 方法來取得 ApplicationTrust 增益集的物件。 IsApplicationTrustedToRun如果 屬性傳
true
回 ,則會執行增益集。 如果沒有, CreateInstanceHelper 則會 PolicyException 擲回 ,指出無法取得執行許可權。如果增益集信任執行,則會為 ActivationContext 增益集的 建立並設定新的 AppDomain ,然後增益集會載入並執行。
增益集啟用的結果會傳回,包裝在物件控制碼中。
自訂啟動器可以針對一組特定情況量身打造增益集的啟用。 例如,自訂啟動器可能會找到現有的 AppDomain 來啟用此增益集,而不是每次建立新的網域。
下列步驟描述在現有 AppDomain 中啟動增益集的自訂 ApplicationActivator 行為:
自訂啟動程式會尋找與所啟動增益集相同的 ActivationContext 網域。
ActivationContext如果 之前從未在進程中看到 ,則自訂啟動器會直接呼叫 CreateDomain 方法,或將這個活動委派給 CreateInstanceHelper 基類中的 ,為這個 ActivationContext 建立新的 AppDomain 。
如果有具有相同 的現有網域 ActivationContext ,則啟動程式可以將方法呼叫委派 CreateInstance 給 ApplicationActivator 目標網域中的 。 請注意,這會是目標 中之 的 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) |