Créer dynamiquement des instances de classe au moment de l'exécution
Seule la connaissance du nom de la DLL et du nom de la classe vous permet de créer des instances d'objet au moment de l'exécution sans ajouter de référence d'assembly dans votre projet. Cette fonctionnalité est particulièrement adaptée aux scénarios tels que les systèmes de plug-ins ou l’injection de dépendances.
Utiliser Assembly.LoadFrom()
Pour charger un assembly en mémoire, utilisez la méthode Assembly.LoadFrom() et indiquez le chemin d'accès au fichier DLL :
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");</code>
Rechercher un objet Type
Après avoir chargé l'assembly, utilisez la réflexion pour localiser des types spécifiques :
<code class="language-csharp">Type type = assembly.GetType("Company.Project.Classname");</code>
Créer une instance
Enfin, utilisez Activator.CreateInstance() pour créer une instance d'objet du type :
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance(type);</code>
Gestion des emplacements de DLL inconnus
Si vous n'avez pas de chemin absolu vers la DLL, vous pouvez vous appuyer sur le mécanisme de résolution de type .NET :
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance("library.dll", "Company.Project.Classname");</code>
Cette méthode recherchera automatiquement divers emplacements, notamment la racine de l'application, system32 et le GAC, pour trouver des assemblys et résoudre les types.
Personnalisation avancée
Si nécessaire, vous pouvez améliorer cette solution en implémentant un mécanisme de recherche de DLL personnalisé pour rechercher des DLL dans des répertoires spécifiques. Cela offrira une plus grande flexibilité dans les scénarios dans lesquels vous stockez d’autres assemblys qui ne sont pas recherchés par le mécanisme de résolution de type par défaut.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!