Cómo: Cargar ensamblados en un dominio de aplicación
Actualización: noviembre 2007
Existen varias formas de cargar un ensamblado en un dominio de aplicación. La forma recomendada es utilizar el método static (Shared en Visual Basic) Load de la clase System.Reflection.Assembly. Otras formas de cargar ensamblados son las que se indican a continuación:
El método LoadFrom de la clase Assembly carga un ensamblado a partir de su ubicación de archivo. Este método de carga de ensamblados utiliza un contexto de carga distinto.
Los métodos ReflectionOnlyLoad y ReflectionOnlyLoadFrom cargan un ensamblado en el contexto de sólo reflexión. Los ensamblados cargados en este contexto pueden examinarse pero no pueden ejecutarse, lo que permite examinar los ensamblados destinados a otras plataformas. Vea Cómo: Cargar ensamblados en el contexto de sólo reflexión.
Nota: |
---|
El contexto de sólo reflexión es nuevo en la versión 2.0 de .NET Framework. |
Los métodos como CreateInstance y CreateInstanceAndUnwrap de la clase AppDomain permiten cargar ensamblados en un dominio de aplicación.
El método GetType de la clase Type puede cargar ensamblados.
El método Load de la clase System.AppDomain permite cargar ensamblados, pero se utiliza principalmente para la interoperabilidad COM. No debe utilizarse para cargar ensamblados en un dominio de aplicación distinto del dominio de aplicación desde el que se llama al método.
Nota: |
---|
A partir de la versión 2.0 de .NET Framework, el tiempo de ejecución no carga ningún ensamblado compilado con un número de versión de .NET Framework mayor que el número de versión del tiempo de ejecución actualmente cargado. Esto se aplica a la combinación de los componentes principal y secundario del número de versión. |
Puede especificar la forma en que el código compilado Just-In-Time (JIT) de los ensamblados cargados se comparte entre los dominios de aplicación. Para obtener más información, vea Dominios de aplicación y ensamblados.
Ejemplo
En el siguiente código, se carga un ensamblado denominado "example.exe" o "example.dll" en el dominio de aplicación actual, se obtiene un tipo denominado Example del ensamblado, se obtiene un método sin parámetros denominado MethodA para ese tipo y se ejecuta el método. Si desea una descripción completa de cómo obtener información de un ensamblado cargado, vea Cargar y utilizar tipos dinámicamente.
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);
}
Vea también
Tareas
Cómo: Cargar ensamblados en el contexto de sólo reflexión
Conceptos
Programar con dominios de aplicación
Información general sobre la reflexión
Dominios de aplicación y ensamblados