Maison > développement back-end > C++ > Comment puis-je instancier dynamiquement une classe à partir de son assembly et de son nom de type ?

Comment puis-je instancier dynamiquement une classe à partir de son assembly et de son nom de type ?

Mary-Kate Olsen
Libérer: 2025-01-19 09:07:13
original
339 Les gens l'ont consulté

How Can I Instantiate a Class Dynamically from its Assembly and Type Name?

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal