Maison >développement back-end >C++ >Puis-je instancier dynamiquement une classe .NET à partir d'une simple DLL et d'un nom de classe ?

Puis-je instancier dynamiquement une classe .NET à partir d'une simple DLL et d'un nom de classe ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-19 09:02:08502parcourir

Can I Dynamically Instantiate a .NET Class from Just a DLL and Class Name?

Chargement dynamique et instanciation des assemblys .NET

N'ayant qu'une DLL et un nom de classe, est-il possible de créer dynamiquement un objet sans référencer explicitement un assembly dans le projet ? Cette classe est conforme à la spécification d'interface, vous permettant de la convertir en interface après instanciation.

Informations sur l'assemblage et le type

  • Nom de l'assembly : library.dll
  • Tapez le nom : Company.Project.Classname

Solution

Oui. En utilisant Assembly.LoadFrom vous pouvez charger un assembly en mémoire. Vous pouvez ensuite utiliser Activator.CreateInstance pour créer une instance du type souhaité. En utilisant la réflexion, vous devez d'abord rechercher le type :

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

Type type = assembly.GetType("MyType");

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

Plan d'amélioration

Une fois que vous avez le nom du fichier d'assemblage et le nom du type, vous pouvez utiliser Activator.CreateInstance(assemblyName, typeName) pour demander au mécanisme de résolution de type .NET de déterminer le type. Pour gérer le cas où cette tentative échoue, vous pouvez l'envelopper dans un bloc try/catch, puis rechercher le répertoire dans lequel l'assembly supplémentaire peut être stocké. À ce stade, vous utiliserez la méthode mentionnée précédemment.

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