1

J'ai un projet C# dll pour lequel je dois stocker les paramètres d'exécution dans un fichier XML externe, et cette DLL sera utilisée dans un ASP.NET/ASP.NET Application MVC pour laquelle je dois également stocker les paramètres d'exécution dans un fichier externe.Meilleure façon d'utiliser un conteneur IoC pour récupérer les paramètres d'exécution

Quel conteneur IoC peut être utilisé pour créer un objet avec les paramètres d'exécution chargés à partir d'un fichier externe spécifique (ou app.config/web.config), et fonctionne également pour les applications Web fonctionnant en confiance moyenne? Tout howto/tutoriel serait grandement apprécié.

Jusqu'à présent, j'ai trouvé que cet article:

Mise à jour

J'envoie mails de mon dll à un nombre variable des serveurs SMTP, en fonction du type d'enregistrement actuel. Pour le type A, j'utilise un serveur + port SMTP donné, pour le type B, j'utilise un autre ensemble de valeurs serveur + port. Bien sûr, je veux être capable de modifier ces valeurs après le déploiement, donc je les stocke dans un fichier XML. Si je stocke les paramètres SMTP en tant que classe SMTPConfiguration avec 2 propriétés (SMTPServer as String et SMTPPort as Int32), est-il possible de renvoyer d'un conteneur IoC l'objet requis en fonction du type d'enregistrement donné? est le meilleur moyen de lire les paramètres d'exécution afin de construire l'objet de retour?

Update2

Disons que je suis stocker dans le fichier de configuration, les paramètres suivants: ASMTPServer, BSMTPServer, ASMTPPort, BSMTPPort. Je peux utiliser Castle DictionaryAdapter pour lire tous ces paramètres en tant que propriétés d'une classe AppConfiguration. Quelle est la méthode recommandée pour spécifier que la classe SMTPConfiguration requise doit utiliser les valeurs ASMTPServer et ASMTPPort si j'utilise un enregistrement de type A en tant que paramètre (et doit utiliser les valeurs BSMTPServer et BSMTPPort si j'utilise un type B enregistrer en tant que paramètre)? De même, comment puis-je spécifier que AppConfiguration est requis dans ce processus?

+0

Windsor peut charger des fichiers externes ... vous écrivez simplement nouvelle WindsorContainer (nouvelle XmlInterpreter ("chemin vers votre fichier")); ou quelque chose comme ça. J'écris ceci de mémoire pour que les noms de classe soient erronés, mais vous avez l'idée. c'est ce que vous cherchez? –

+0

@Krzysztof Koźmic: pas vraiment, je garde mes paramètres d'application en classe (avec des propriétés comme le nom smtp, le port, l'adresse mail et ainsi de suite), et je voudrais utiliser le même conteneur IoC pour mon application en tant que DI et pour charger mes paramètres à partir d'un fichier de configuration externe. – alexandrul

+0

Je ne suis pas sûr de vous avoir bien compris - si vous voulez charger une configuration à partir d'un objet existant, vous pouvez écrire IResource personnalisé qui hérite de AbstractStreamResource, désérialise l'objet dans la mémoire et l'expose en lecture en tant que flux. Si votre objet a une forme différente du fichier de configuration, vous pouvez écrire IConfigurationStore personnalisé. –

Répondre