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합니다. 다음 단계를 새 이동 AppDomain 를 사용 하 여는 ActivationArguments 추가 기능에 대 한 합니다.

    1. 새로 만듭니다 AppDomainSetup 를 사용 하 여 개체를 ActivationArguments 추가 기능에 대해 활성화 컨텍스트를 포함 하는 개체입니다.

    2. 호출 된 CreateInstanceHelper 메서드를 사용 하 여 새 도메인 만들기를 AppDomainSetup 개체입니다.

    3. CreateInstanceHelper 메서드 호출을 HostSecurityManager.DetermineApplicationTrust 획득 하는 방법은 ApplicationTrust 추가 기능에 대 한 개체입니다. 경우는 IsApplicationTrustedToRun 속성이 반환 true, 추가 기능에서 실행 됩니다. 그러지 않으면 CreateInstanceHelper throw를 PolicyException 나타내는 실행 권한을 획득할 수 없습니다.

    4. 실행 한 다음 새 신뢰할 수 있는 추가 기능의 경우 AppDomain 만들어지고 구성 되는 ActivationContext 는 추가 기능에 추가 기능에서 로드 되 고 실행 하 고 합니다.

    5. 추가 기능의 활성화 하면 개체 핸들에 래핑되어 반환 됩니다.

사용자 지정 활성기 상황의 특정 집합의 추가 기능 활성화를 조정할 수 있습니다. 예를 들어, 기존 사용자 지정 활성기를 찾을 수 AppDomain 기능을 활성화이 추가 될 때마다 새 도메인을 만드는 대신 합니다.

사용자 지정 동작을 설명 하는 다음 단계 ApplicationActivator 기존으로 추가 기능을 활성화 하는 AppDomain:

  1. 사용자 지정 활성기 같은 도메인을 찾습니다 ActivationContext 는 추가 기능으로 활성화 하는 중입니다.

  2. 경우는 ActivationContext 사용한 적 전에 프로세스에서 사용자 지정 활성기를 만듭니다 AppDomain 이 대 한 ActivationContext 호출 하 여를 CreateDomain 메서드를 직접 또는이 작업을 위임 합니다 CreateInstanceHelper 기본 클래스에서.

  3. 같은 기존 도메인에 없는 경우 ActivationContext, 다음 활성기를 위임할 수는 CreateInstance 메서드를 호출 하는 ApplicationActivator 대상 도메인에서. 이 수에 대 한 도메인 간 호출을 ApplicationActivator 대상에 상주 하는 AppDomain합니다.

생성자

ApplicationActivator()

ApplicationActivator 클래스의 새 인스턴스를 초기화합니다.

메서드

CreateInstance(ActivationContext)

지정된 활성화 컨텍스트를 사용하여 활성화될 애플리케이션의 인스턴스를 만듭니다.

CreateInstance(ActivationContext, String[])

지정된 활성화 컨텍스트 및 사용자 지정 활성화 데이터를 사용하여 활성화될 애플리케이션의 인스턴스를 만듭니다.

CreateInstanceHelper(AppDomainSetup)

지정된 AppDomainSetup 개체를 사용하여 애플리케이션의 인스턴스를 만듭니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상