Como: Carregar assemblies em um domínio do aplicativo
Há várias maneiras para carregar um conjunto de módulos (assembly) em um domínio de aplicativo.A maneira recomendada é usar o método static (Shared no Visual Basic) Load da classe System.Reflection.Assembly.Outras maneiras pelas quais os conjuntos de módulos (assemblies) pode ser carregados incluem:
O método LoadFrom da classe Assembly carrega um conjunto de módulos (assembly) dado seu arquivo local.Carregar conjuntos de módulos (assemblies) com este método usa um contexto de carregamento diferente.
Os métodos ReflectionOnlyLoad e ReflectionOnlyLoadFrom carregam um conjunto de módulos (assembly) num contexto exclusivo de reflexão.Conjuntos de Módulos (Assemblies) carregados neste contexto pode ser examinados, mas não executados, permitindo que o exame dos conjuntos que tem como destino outras plataformas.Consulte Como: Carregar assemblies para o contexto somente de Reflexo.
Observação: |
---|
O contexto somente de reflexão é Novo no .NET estrutura versão 2.0. |
Métodos como CreateInstance e CreateInstanceAndUnwrap da classe AppDomain podem carregar conjuntos de módulos (assemblies) em um domínio do aplicativo.
O método GetType da classe Type pode carregar conjuntos de módulos (assemblies).
O método Load da classe System.AppDomain pode carregar conjuntos de módulos (assemblies), mas é basicamente usado para interoperabilidade COM.Ele não deve ser usado para carregar conjuntos de módulos (assemblies) em um domínio diferente do domínio de aplicativo do qual ele é chamado.
Observação: |
---|
Começando com o .NET estrutura versão 2.0, o tempo de execução não será carregado um assembly que foi compilado com uma versão do .NET estrutura possui um número de versão superior que atualmente carregado tempo de execução.Isso se aplica a combinação dos componentes principais e secundárias do número da versão . |
Você pode especificar a maneira com que o código compilado just-in-time (JIT) dos conjuntos carregados é compartilhada entre domínios de aplicativos.Para obter mais informações, consulte Domínios de Aplicativos e Assemblies.
Exemplo
O código a seguir carrega um conjunto de módulos (assembly) chamado "example.exe" ou "example.dll" para o domínio de aplicativo atual, recebe um tipo do conjunto chamado Example, obtém um método sem-parâmetros chamado MethodA para esse tipo, e executa o método.Para uma discussão completa sobre como obter as informações de um assembly carregado, consulte Carregando dinamicamente e usando tipos.
Imports System
Imports System.Reflection
Public Class Asmload0
Public Shared Sub Main()
' Use the file name to load the assembly into the current
' application domain.
Dim a As [Assembly] = [Assembly].Load("example")
' Get the type to use.
Dim myType As Type = a.GetType("Example")
' Get the method to call.
Dim mymethod As MethodInfo = myType.GetMethod("MethodA")
' Create an instance
Dim obj As Object = Activator.CreateInstance(myType)
' Execute the method.
mymethod.Invoke(obj, Nothing)
End Sub
End Class
using System;
using System.Reflection;
public class Asmload0
{
public static void Main ()
{
// Use the file name to load the assembly into the current
// application domain.
Assembly a = Assembly.Load("example");
// Get the type to use.
Type myType = a.GetType("Example");
// Get the method to call.
MethodInfo mymethod = myType.GetMethod("MethodA");
// Create an instance.
Object obj = Activator.CreateInstance(myType);
// Execute the method.
mymethod.Invoke(obj,null);
}
}
using namespace System;
using namespace System::Reflection;
void main()
{
// Use the file name to load the assembly into the current
// application domain.
Assembly^ a = Assembly::Load("example");
// Get the type to use.
Type^ myType = a->GetType("Example");
// Get the method to call.
MethodInfo^ mymethod = myType->GetMethod("MethodA");
// Create an instance.
Object^ obj = Activator::CreateInstance(myType);
// Execute the method.
mymethod->Invoke(obj,nullptr);
}
Consulte também
Tarefas
Como: Carregar assemblies para o contexto somente de Reflexo
Conceitos
Programação com domínios de aplicativo
Domínios de Aplicativos e Assemblies