Maison >développement back-end >C++ >Comment puis-je charger et instancier un assembly .NET en connaissant uniquement son nom et son nom de classe ?

Comment puis-je charger et instancier un assembly .NET en connaissant uniquement son nom et son nom de classe ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-19 09:11:09292parcourir

How Can I Load and Instantiate a .NET Assembly Knowing Only Its Name and Class Name?

Chargement et création dynamiques d'instances d'assemblys .NET

Dans de nombreux scénarios de développement, vous devrez peut-être charger et créer une instance d'un assembly .NET au moment de l'exécution, en connaissant uniquement son nom et la classe que vous souhaitez utiliser. Ceci est différent du référencement traditionnel, où vous ajoutez explicitement une référence à votre projet.

Utilisation de Assembly.LoadFrom et Activator.CreateInstance

Le framework .NET fournit les outils nécessaires pour gérer cela. Assembly.LoadFrom charge l'assembly en mémoire, rendant ses types accessibles. Ensuite, Activator.CreateInstance crée une instance de la classe spécifiée dans cet assembly.

Exemple de code

Voici comment charger un assembly et créer une instance de classe :

<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");

Type type = assembly.GetType("Company.Project.Classname");

object instanceOfClassname = Activator.CreateInstance(type);</code>

Gestion des chemins inconnus

Si le chemin exact de la DLL est inconnu, Assembly.LoadFrom ne fonctionnera pas. Dans cette situation, vous pouvez essayer Activator.CreateInstance(assemblyName, typeName). Cette méthode tente de localiser le type en fonction des noms d’assembly et de type. En cas d'échec, vous pouvez rechercher des répertoires spécifiques pour l'assembly, puis utiliser Assembly.LoadFrom pour l'instanciation.

Cette approche ajoute de la flexibilité d'exécution à vos applications, leur permettant d'interagir avec des assemblys sans référencement explicite préalable.

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!

Déclaration:
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