Sdílet prostřednictvím


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

Existuje několik způsobů načtení sestavení do domény aplikace. Doporučený způsob je použití metody static (Shared v jazyce Visual Basic) Load třídy System.Reflection.Assembly. Mezi jiné způsoby pro načtení sestavení patří:

PoznámkaPoznámka

Kontext pouhé reflexe je v rozhraní .NET Framework verze 2.0 nový.

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

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

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

PoznámkaPoznámka

Počínaje rozhraním .NET Framework verze 2.0 modul runtime nenačte sestavení, které bylo kompilováno pomocí verze rozhraní .NET Framework, které má vyšší číslo verze než aktuálně načtený modul runtime.To platí pro kombinace hlavních a vedlejších součástí čísla verze.

Můžete určit způsob jakým je za běhu (JIT) zkompilovaný kód z načteného sestavení sdílen 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 s názvem Example z daného sestavení, získá metodu bez parametrů pojmenovanou MethodA tohoto typu a provede metodu. Úplné informace o získání informací z načteného sestavení naleznete v tématu Dynamické načítání a používání typů.

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

Viz také

Úkoly

How to: Load Assemblies into the Reflection-Only Context

Odkaz

ReflectionOnlyLoad

Koncepty

Hosting Overview

Programování pomocí domén aplikace

Reflection

Domény aplikace a sestavení

Další zdroje

Použití domén aplikací