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:

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

Referencia

ReflectionOnlyLoad

Otros recursos

Alojar Common Language Runtime

Utilizar dominios de aplicación