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