Cómo: Cargar ensamblados en un dominio de aplicación

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:

NotaNota

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.

NotaNota

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;

public ref 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, nullptr);
    }
};

int main()
{
    Asmload0::Main();
}

Vea también

Tareas

Cómo: Cargar ensamblados en el contexto de sólo reflexión

Referencia

ReflectionOnlyLoad

Conceptos

Información general de hospedaje

Programar con dominios de aplicación

Reflexión

Dominios de aplicación y ensamblados

Otros recursos

Utilizar dominios de aplicación