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ří:
Metoda LoadFrom třídy Sestavení načte sestavení zadané jeho umístěním. Načtení sestavení touto metodou používá různé kontexty načtení.
Metody ReflectionOnlyLoad a ReflectionOnlyLoadFrom načtou sestavení do kontextu pouhé reflexe. Sestavení načtená do tohoto kontextu lze zkontrolovat, ale ne spustit, což umožňuje zkontrolování sestavení, které je zaměřeno na jiné cílové platformy. Viz téma How to: Load Assemblies into the Reflection-Only Context.
Pozná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 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á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
Koncepty
Programování pomocí domén aplikace