ApplicationActivator Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyediakan kelas dasar untuk aktivasi rakitan berbasis manifes.
public ref class ApplicationActivator
[System.Runtime.InteropServices.ComVisible(true)]
public class ApplicationActivator
[<System.Runtime.InteropServices.ComVisible(true)>]
type ApplicationActivator = class
Public Class ApplicationActivator
- Warisan
-
ApplicationActivator
- Atribut
Contoh
Contoh kode berikut menunjukkan cara mendapatkan ApplicationActivator objek dari saat ini DomainManager untuk aplikasi berbasis manifes.
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
Keterangan
Ada satu instans kelas yang ditunjuk ApplicationActivator di masing-masing AppDomain tempat semua panggilan aktivasi dirutekan. AppDomainManager untuk saat ini AppDomain dapat memberikan kustomnya ApplicationActivator sendiri untuk tujuan ini. Jika kustom ApplicationActivator tidak disediakan, instans default ApplicationActivator dibuat.
Langkah-langkah berikut menjelaskan perilaku implementasi metode default CreateInstance :
Memeriksa apakah ActivationContext add-in yang akan diaktifkan cocok dengan ActivationContext domain saat ini; jika tidak, lanjutkan ke langkah 2. Jika tidak, jalankan rakitan dan mengembalikan hasil yang dibungkus dalam handel objek.
Mengaktifkan add-in dalam baru AppDomain. Langkah-langkah berikut diambil untuk menginisialisasi baru AppDomain menggunakan ActivationArguments untuk add-in.
Membuat objek baru AppDomainSetup menggunakan objek yang ActivationArguments berisi konteks aktivasi untuk add-in.
CreateInstanceHelper Memanggil metode untuk membuat domain baru menggunakan AppDomainSetup objek .
Metode CreateInstanceHelper ini memanggil HostSecurityManager.DetermineApplicationTrust metode untuk memperoleh ApplicationTrust objek untuk add-in. IsApplicationTrustedToRun Jika properti mengembalikan
true, add-in dijalankan. Jika tidak, CreateInstanceHelper melemparkan yang PolicyException menunjukkan bahwa izin eksekusi tidak dapat diperoleh.Jika add-in dipercaya untuk dijalankan, maka baru AppDomain dibuat dan dikonfigurasi untuk ActivationContext add-in, dan add-in dimuat dan dijalankan.
Hasil aktivasi add-in dikembalikan, dibungkus dalam handel objek.
Aktivator kustom dapat menyesuaikan aktivasi add-in dengan serangkaian keadaan tertentu. Misalnya, aktivator kustom dapat menemukan yang sudah ada AppDomain untuk mengaktifkan add-in ini alih-alih membuat domain baru setiap saat.
Langkah-langkah berikut menjelaskan perilaku kustom ApplicationActivator yang mengaktifkan add-in di yang sudah ada AppDomain:
Aktivator kustom menemukan domain yang memiliki hal yang sama ActivationContext dengan add-in yang sedang diaktifkan.
ActivationContext Jika belum pernah terlihat sebelumnya dalam proses, aktivator kustom membuat baru AppDomain untuk ini ActivationContext dengan memanggil CreateDomain metode secara langsung, atau mendelegasikan aktivitas ini ke CreateInstanceHelper di kelas dasar.
Jika ada domain yang sudah ada dengan yang sama ActivationContext, maka aktivator dapat mendelegasikan CreateInstance panggilan metode ke ApplicationActivator di domain target. Perhatikan bahwa ini akan menjadi panggilan lintas domain ke ApplicationActivator yang berada di target AppDomain.
Konstruktor
| Nama | Deskripsi |
|---|---|
| ApplicationActivator() |
Menginisialisasi instans baru dari kelas ApplicationActivator. |
Metode
| Nama | Deskripsi |
|---|---|
| CreateInstance(ActivationContext, String[]) |
Membuat instans aplikasi yang akan diaktifkan, menggunakan konteks aktivasi dan data aktivasi kustom yang ditentukan. |
| CreateInstance(ActivationContext) |
Membuat instans aplikasi yang akan diaktifkan, menggunakan konteks aktivasi yang ditentukan. |
| CreateInstanceHelper(AppDomainSetup) |
Membuat instans aplikasi menggunakan objek yang ditentukan AppDomainSetup . |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |