2009-06-29 4 views
4

J'ai une DLL qui est référencée par l'assembly parent (en cours d'exécution). Dans la section ApplicationSettings de l'app.config pour l'assembly parent, j'ai quelques paramètres qui peuvent être accédés de la manière intellisense normale (par exemple Properties.Settings.Default.SMTPServer).Comment accéder à la section ApplicationSettings d'un autre assembly?

Comment puis-je accéder à ces paramètres à partir de la DLL référencée? Je ne peux évidemment pas utiliser intellisense car ils ne sont pas dans le même assemblage!

+0

Il est bizarre que je puisse accéder à la section AppSettings ".Net 1.0 style" à travers ConfigurationManager.AppSettings ... mais que je ne peux pas accéder à la façon .Net 2.0 d'obtenir des paramètres d'un autre assemblage. – Calanus

Répondre

0

Accédez-vous à cette valeur à partir des deux assemblages?

La DLL peut avoir son propre fichier de configuration et les paramètres de l'application. Cela commence comme une DLL avec un fichier de configuration nommé d'après elle, mais les paramètres peuvent également être déplacés vers l'application principale.

Une autre approche que j'ai utilisée est d'assigner la valeur à un IoC puis de lire la valeur de la bibliothèque Ioc (Ioc == Inversion of Control). Vous pouvez faire la même chose en affectant la valeur à une classe singleton.

+0

Je n'accède pas à la valeur des deux assemblages. La raison pour laquelle je veux que l'assembly en cours d'exécution conserve le paramètre est que la DLL référencée est utilisée/compilée par de nombreuses applications différentes mais les paramètres seront différents pour chaque application - par conséquent les paramètres ne peuvent pas être définis dans la DLL référencée. – Calanus

0

Avez-vous essayé d'enregistrer un fichier .settings dans votre projet DLL, puis d'utiliser son opérateur [] pour accéder à la propriété par son nom?

Par exemple, supposons que votre DLL a un fichier MySettings.settings qui n'a rien en particulier il:

MySettings.Default [ "SomeSetting"];

(Remarque, je ne l'ai pas vraiment essayé, mais après THINK rapide, il semble que cela devrait fonctionner)

Je pense qu'une meilleure solution serait de prendre les conseils de Chris et d'utiliser un singleton ou du CIO mécanisme, de cette façon vous ne deviez pas sacrifier la sécurité de type.

Questions connexes