AppDomain.AssemblyLoad 事件
在加载程序集时发生。
**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)
语法
声明
Public Event AssemblyLoad As AssemblyLoadEventHandler
用法
Dim instance As AppDomain
Dim handler As AssemblyLoadEventHandler
AddHandler instance.AssemblyLoad, handler
public event AssemblyLoadEventHandler AssemblyLoad
public:
virtual event AssemblyLoadEventHandler^ AssemblyLoad {
void add (AssemblyLoadEventHandler^ value) sealed;
void remove (AssemblyLoadEventHandler^ value) sealed;
}
/** @event */
public final void add_AssemblyLoad (AssemblyLoadEventHandler value)
/** @event */
public final void remove_AssemblyLoad (AssemblyLoadEventHandler value)
JScript 支持使用事件,但不支持进行新的声明。
备注
此事件的 AssemblyLoadEventHandler 委托指示已加载了哪个程序集。
若要为此事件注册事件处理程序,必须具有所需权限,否则将引发 SecurityException。
有关处理事件的更多信息,请参见 使用事件。
示例
下面的示例阐释 AssemblyLoad 事件。
要运行该代码实例,必须提供完全限定程序集名称。有关如何获取完全限定程序集名称的信息,请参见 程序集名称。
Option Strict On
Option Explicit On
Imports System
Imports System.Reflection
Module Test
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
AddHandler currentDomain.AssemblyLoad, AddressOf MyAssemblyLoadEventHandler
PrintLoadedAssemblies(currentDomain)
' Lists mscorlib and this assembly
' You must supply a valid fully qualified assembly name here.
currentDomain.CreateInstance("System.Windows.Forms,Version,Culture,PublicKeyToken", "System.Windows.Forms.TextBox")
' Loads System, System.Drawing, System.Windows.Forms
PrintLoadedAssemblies(currentDomain)
' Lists all five assemblies
End Sub 'Main
Sub PrintLoadedAssemblies(domain As AppDomain)
Console.WriteLine("LOADED ASSEMBLIES:")
Dim a As System.Reflection.Assembly
For Each a In domain.GetAssemblies()
Console.WriteLine(a.FullName)
Next a
Console.WriteLine()
End Sub 'PrintLoadedAssemblies
Sub MyAssemblyLoadEventHandler(sender As Object, args As AssemblyLoadEventArgs)
Console.WriteLine("ASSEMBLY LOADED: " + args.LoadedAssembly.FullName)
Console.WriteLine()
End Sub 'MyAssemblyLoadEventHandler
End Module 'Test
using System;
using System.Reflection;
class Test {
public static void Main() {
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyLoad += new AssemblyLoadEventHandler(MyAssemblyLoadEventHandler);
PrintLoadedAssemblies(currentDomain);
// Lists mscorlib and this assembly
// You must supply a valid fully qualified assembly name here.
currentDomain.CreateInstance("System.Windows.Forms, Version, Culture, PublicKeyToken", "System.Windows.Forms.TextBox");
// Loads System, System.Drawing, System.Windows.Forms
PrintLoadedAssemblies(currentDomain);
// Lists all five assemblies
}
static void PrintLoadedAssemblies(AppDomain domain) {
Console.WriteLine("LOADED ASSEMBLIES:");
foreach (Assembly a in domain.GetAssemblies()) {
Console.WriteLine(a.FullName);
}
Console.WriteLine();
}
static void MyAssemblyLoadEventHandler(object sender, AssemblyLoadEventArgs args) {
Console.WriteLine("ASSEMBLY LOADED: " + args.LoadedAssembly.FullName);
Console.WriteLine();
}
}
using namespace System;
using namespace System::Reflection;
ref class Test
{
public:
static void MyAssemblyLoadEventHandler( Object^ sender, AssemblyLoadEventArgs^ args )
{
Console::WriteLine( "ASSEMBLY LOADED: {0}", args->LoadedAssembly->FullName );
Console::WriteLine();
}
};
void PrintLoadedAssemblies( AppDomain^ domain )
{
Console::WriteLine( "LOADED ASSEMBLIES:" );
System::Collections::IEnumerator^ myEnum = domain->GetAssemblies()->GetEnumerator();
while ( myEnum->MoveNext() )
{
Assembly^ a = safe_cast<Assembly^>(myEnum->Current);
Console::WriteLine( a->FullName );
}
Console::WriteLine();
}
int main()
{
AppDomain^ currentDomain = AppDomain::CurrentDomain;
currentDomain->AssemblyLoad += gcnew AssemblyLoadEventHandler( Test::MyAssemblyLoadEventHandler );
PrintLoadedAssemblies( currentDomain );
// Lists mscorlib and this assembly
// You must supply a valid fully qualified assembly name here.
currentDomain->CreateInstance( "System.Windows.Forms, Version, Culture, PublicKeyToken", "System.Windows.Forms.TextBox" );
// Loads System, System::Drawing, System::Windows::Forms
PrintLoadedAssemblies( currentDomain );
// Lists all five assemblies
}
.NET Framework 安全性
- SecurityPermission 用于为此事件添加事件处理程序。关联的枚举:SecurityPermissionFlag.ControlAppDomain。
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0