Sdílet prostřednictvím


Postupy: Načtení sestavení do domény aplikace

Poznámka:

Tento článek je specifický pro rozhraní .NET Framework. Nevztahuje se na novější implementace .NET, včetně .NET 6 a novějších verzí.

Existuje několik způsobů, jak načíst sestavení do domény aplikace. Doporučeným způsobem je použít metodu staticSystem.Reflection.Assembly (Sharedv jazyce Visual Basic) Load třídy. Mezi další způsoby načtení sestavení patří:

Poznámka:

Kontext jen pro reflexi je v rozhraní .NET Framework verze 2.0 nový.

  • Metody jako CreateInstance a CreateInstanceAndUnwrap třída AppDomain mohou načíst sestavení do domény aplikace.

  • Metoda GetTypeType třídy může načíst sestavení.

  • Metoda LoadSystem.AppDomain třídy může načíst sestavení, ale primárně se používá pro interoperabilitu modelu COM. Neměla by být použita k načtení sestavení do jiné domény aplikace, než je doména aplikace, ze které je volána.

Poznámka:

Počínaje rozhraním .NET Framework verze 2.0 modul runtime nenačte sestavení kompilované s verzí rozhraní .NET Framework, která má vyšší číslo verze než aktuálně načtený modul runtime. To platí pro kombinaci hlavních a podverze čísla verze.

Můžete určit způsob, jakým se zkompilovaný kód za běhu (JIT) z načtených sestavení sdílí mezi doménami aplikace. Další informace naleznete v tématu Domény aplikace a sestavení.

Příklad

Následující kód načte sestavení s názvem "example.exe" nebo "example.dll" do aktuální domény aplikace, získá typ pojmenovaný Example ze sestavení, získá metodu bez parametrů pojmenovanou MethodA pro tento typ a spustí metodu. Úplnou diskuzi o získání informací z načteného sestavení naleznete v tématu Dynamické načítání a používání typů.

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

Viz také