Comment : charger des assemblys dans un domaine d'application
Mise à jour : novembre 2007
Il existe plusieurs manières de charger un assembly dans un domaine d'application. Il est recommandé d'utiliser la méthode static (Shared dans Visual Basic) Load de la classe System.Reflection.Assembly. Voici d'autres manières de charger des assemblys :
La méthode LoadFrom de la classe Assembly charge un assembly selon son emplacement de fichier. Le chargement d'assemblys avec cette méthode utilise un contexte de chargement différent.
Les méthodes ReflectionOnlyLoad et ReflectionOnlyLoadFrom chargent un assembly dans le contexte de réflexion uniquement. Les assemblys chargés dans ce contexte peuvent être examinés mais ne peuvent pas être exécutés, ce qui permet l'examen des assemblys qui ciblent d'autres plateformes. Consultez Comment : charger des assemblys dans le contexte de réflexion uniquement.
Remarque : |
---|
Le contexte de réflexion uniquement est une nouveauté de la version 2.0 du .NET Framework. |
Les méthodes telles que CreateInstance et CreateInstanceAndUnwrap de la classe AppDomain peuvent charger des assemblys dans un domaine d'application.
La méthode GetType de la classe Type peut charger des assemblys.
La méthode Load de la classe System.AppDomain peut charger des assemblys, mais est principalement utilisée pour l'interopérabilité COM. Elle ne doit pas être utilisée pour charger des assemblys dans un domaine d'application autre que le domaine d'application duquel elle est appelée.
Remarque : |
---|
Démarrant avec le .NET Framework version 2.0, le runtime ne chargera pas un assembly qui a été compilé avec une version du .NET Framework dont le numéro de version est plus élevé que le runtime actuellement chargé. Cela s'applique à la combinaison des composants majeurs et mineurs du numéro de version. |
Vous pouvez spécifier la façon dont le code compilé juste-à-temps des assemblys chargés est partagé entre les domaines d'application. Pour plus d'informations, consultez Domaines d'application et assemblys.
Exemple
Le code suivant charge un assembly nommé "example.exe" ou "example.dll" dans le domaine d'application en cours, obtient un type nommé Example de l'assembly, obtient une méthode sans paramètre nommée MethodA pour ce type, et exécute la méthode. Pour une description complète de l'obtention d'informations à partir d'un assembly chargé, consultez Chargement et utilisation dynamiques des types.
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;
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);
}
Voir aussi
Tâches
Comment : charger des assemblys dans le contexte de réflexion uniquement
Concepts
Programmation avec des domaines d'application
Vue d'ensemble de la réflexion
Domaines d'application et assemblys