Procedura: caricare assembly in un dominio applicazione

È possibile procedere in diversi modi per caricare un assembly in un dominio applicazione. L'approccio consigliato è l'utilizzo del metodo Load static (Shared in Visual Basic) della classe System.Reflection.Assembly. Per caricare gli assembly è possibile inoltre utilizzare i seguenti metodi:

NotaNota

Il contesto ReflectionOnly è stata introdotto con .NET Framework versione 2.0.

  • Metodi quali CreateInstance e CreateInstanceAndUnwrap della classe AppDomain per caricare assembly in un dominio dell'applicazione.

  • Il metodo GetType della classe Type per caricare assembly.

  • Il metodo Load della classe System.AppDomain per caricare assembly, anche se è utilizzato principalmente per l'interoperabilità COM. Non utilizzarlo per caricare assembly in un dominio applicazione diverso da quello da cui è chiamato.

NotaNota

A partire da .NET Framework versione 2.0, il runtime non carica un assembly compilato con una versione di .NET Framework successiva a quella del runtime attualmente caricato.Questa indicazione è valida per la combinazione di componenti principali e secondari del numero di versione.

È possibile specificare la modalità di condivisione del codice con compilazione JIT tra domini applicazione. Per ulteriori informazioni, vedere Domini applicazione e assembly.

Esempio

Nel codice riportato di seguito si carica un assembly denominato "example.exe" o "example.dll" nel dominio applicazione corrente, si ottiene un tipo denominato Example dall'assembly, si ottiene un metodo senza parametri denominato MethodA per tale tipo e si esegue il metodo. Per un'illustrazione completa sulle modalità di recupero di informazioni da un assembly caricato, vedere Caricamento dinamico e utilizzo dei tipi.

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();
}

Vedere anche

Attività

Procedura: caricare assembly nel contesto Reflection-Only

Riferimenti

ReflectionOnlyLoad

Concetti

Cenni preliminari sull'hosting

Programmazione con i domini applicazione

Reflection

Domini applicazione e assembly

Altre risorse

Utilizzo dei domini applicazione