Delen via


Procedure: Assembly's laden in een toepassingsdomein

Notitie

Dit artikel is specifiek voor .NET Framework. Dit geldt niet voor nieuwere implementaties van .NET, waaronder .NET 6 en nieuwere versies.

Er zijn verschillende manieren om een assembly in een toepassingsdomein te laden. De aanbevolen manier is om de static methode (Shared in Visual Basic) Load van de System.Reflection.Assembly klasse te gebruiken. Andere manieren waarop assembly's kunnen worden geladen, zijn:

  • De LoadFrom methode van de Assembly klasse laadt een assembly op basis van de bestandslocatie. Het laden van assembly's met deze methode maakt gebruik van een andere laadcontext.

  • De ReflectionOnlyLoad en ReflectionOnlyLoadFrom methoden laden een assembly in de context alleen weerspiegeling. Assembly's die in deze context worden geladen, kunnen worden onderzocht, maar niet worden uitgevoerd, waardoor het onderzoek van assembly's die op andere platforms zijn gericht, wordt toegestaan. Zie Procedure: Assembly's laden in de context alleen weerspiegeling.

Notitie

De context alleen weerspiegeling is nieuw in .NET Framework versie 2.0.

  • Methoden zoals CreateInstance en CreateInstanceAndUnwrap van de AppDomain klasse kunnen assembly's laden in een toepassingsdomein.

  • De GetType methode van de Type klasse kan assembly's laden.

  • De Load methode van de System.AppDomain klasse kan assembly's laden, maar wordt voornamelijk gebruikt voor COM-interoperabiliteit. Het mag niet worden gebruikt om assembly's te laden in een ander toepassingsdomein dan het toepassingsdomein van waaruit het wordt aangeroepen.

Notitie

Vanaf .NET Framework versie 2.0 laadt de runtime geen assembly die is gecompileerd met een versie van .NET Framework met een hoger versienummer dan de momenteel geladen runtime. Dit geldt voor de combinatie van de primaire en secundaire onderdelen van het versienummer.

U kunt opgeven hoe de Just-In-Time-code (JIT) van geladen assembly's wordt gedeeld tussen toepassingsdomeinen. Zie Toepassingsdomeinen en assembly's voor meer informatie.

Opmerking

De volgende code laadt een assembly met de naam 'example.exe' of 'example.dll' in het huidige toepassingsdomein, haalt een type op met de naam Example van de assembly, haalt een parameterloze methode op met de naam MethodA voor dat type en voert de methode uit. Zie Dynamisch laden en typen gebruiken voor een volledige discussie over het verkrijgen van informatie uit een geladen assembly.

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

Zie ook