ApplicationActivator クラス
アセンブリ: mscorlib (mscorlib.dll 内)


AppDomain ごとに ApplicationActivator クラスのインスタンスが 1 つ指定され、アクティベーションの呼び出しは、すべてそのインスタンスにルーティングされます。そのため、現在の AppDomain の AppDomainManager で、独自のカスタム ApplicationActivator を提供できます。カスタムの ApplicationActivator が提供されない場合は、既定の ApplicationActivator のインスタンスが作成されます。
既定の CreateInstance メソッドの実装の動作を次の手順に示します。
-
アクティブにするアドインの ActivationContext が現在のドメインの ActivationContext と一致するかどうかをチェックします。一致しない場合は、手順 2 に進みます。それ以外の場合は、アセンブリを実行し、オブジェクト ハンドルにラップされた結果を返します。
-
新しい AppDomain でアドインをアクティブにします。以下の手順で、アドインの ActivationArguments を使用して新しい AppDomain を初期化します。
-
アドインのアクティベーション コンテキストを格納している ActivationArguments オブジェクトを使用して、新しい AppDomainSetup オブジェクトを作成します。
-
CreateInstanceHelper メソッドを呼び出し、AppDomainSetup オブジェクトを使用して新しいドメインを作成します。
-
CreateInstanceHelper メソッドは、HostSecurityManager.DetermineApplicationTrust メソッドを呼び出して、アドインの ApplicationTrust オブジェクトを取得します。IsApplicationTrustedToRun プロパティが true を返した場合は、アドインが実行されます。それ以外の場合は、CreateInstanceHelper から、実行するためのアクセス許可を取得できなかったことを示す PolicyException がスローされます。
-
アドインに実行の信頼レベルが与えられている場合、新しい AppDomain が作成されてアドインの ActivationContext 用に設定され、アドインが読み込まれて実行されます。
-
カスタム アクティベータで、特定の状況のセットに応じてアドインのアクティベーションをカスタマイズできます。たとえば、カスタム アクティベータで、毎回新しいドメインを作成せずに、既存の AppDomain を探してアドインをアクティブ化することなどができます。
既存の AppDomain でアドインをアクティブ化するカスタムの ApplicationActivator の動作を次の手順に示します。
-
カスタム アクティベータは、アクティブ化するアドインと同じ ActivationContext を持つドメインを探します。
-
プロセス内に ActivationContext がない場合、カスタム アクティベータは、直接 CreateDomain メソッドを呼び出して、この ActivationContext の新しい AppDomain を作成するか、この動作を基本クラスの CreateInstanceHelper にデリゲートします。
-
同じ ActivationContext の既存のドメインがある場合、アクティベータは CreateInstance メソッド呼び出しをアクティブ化先ドメインの ApplicationActivator にデリゲートできます。これは、アクティブ化先の AppDomain に存在する ApplicationActivator をドメインをまたがって呼び出すことになります。

マニフェストに基づくアプリケーションの現在の DomainManager から、ApplicationActivator オブジェクトを取得する方法を次のコード例に示します。
Imports System 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) '<Snippet2 ' 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 'Main <SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy:=True)> _ Public Sub Run() Main(New String() {}) Console.ReadLine() End Sub 'Run End Class 'Program
using System; using System.Collections; using System.Text; using System.Security.Policy; using System.Reflection; using System.Security; using System.Security.Permissions; using System.Runtime.Hosting; namespace ActivationContextSample { public class Program : MarshalByRefObject { [SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy=true)] 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(); } [SecurityPermission(SecurityAction.LinkDemand, ControlDomainPolicy=true)] public void Run() { Main(new string[] { }); Console.ReadLine(); } } }

System.Runtime.Hosting.ApplicationActivator


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ApplicationActivator コンストラクタ
アセンブリ: mscorlib (mscorlib.dll 内)


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ApplicationActivator メソッド

名前 | 説明 | |
---|---|---|
![]() | CreateInstance | オーバーロードされます。 アプリケーションを識別するアクティベーション コンテキストを使用して、アクティブ化するアプリケーションのインスタンスを作成します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | CreateInstanceHelper | 指定した AppDomainSetup オブジェクトを使用してアプリケーションのインスタンスを作成します。 |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

ApplicationActivator メンバ
マニフェストに基づくアセンブリのアクティベーションの基本クラスを提供します。
ApplicationActivator データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | CreateInstance | オーバーロードされます。 アプリケーションを識別するアクティベーション コンテキストを使用して、アクティブ化するアプリケーションのインスタンスを作成します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | CreateInstanceHelper | 指定した AppDomainSetup オブジェクトを使用してアプリケーションのインスタンスを作成します。 |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- ApplicationActivatorのページへのリンク