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

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é