做项目时,经常需要在自己设计的类库中使用很多用户配置。虽然在应用程序的App.config和Web应用程序web.config这样的文件里配置也能满足需求,但这样做不仅会让主配置文件的内容变得多、杂,还会让模块依赖主程序的配置文件。
我们知道在VS中,可以在类库项目里添加一种叫做“应用程序配置文件”的文件,这是标准的.NET配置文件,模板自带“configuration”元素,编辑时还会有智能提示。但是怎么在程序代码中使用写在App.config里的配置呢?近日在网上搜了一通,却一无所获。于是只好自已动手!
我以前做的一个项目里,用到过类型的实现方式。可以获取在类库App.config文件中“appSettings”和“conectionStrings”节添加的自定义配置,但是不能自定义配置节。从MSDN上了解到,要想在配置文件中自定义配置节,需要实现一个自定义的ConfigurationSection。两下结合起来,想在类库中用App.config彻底自定义配置的需求就可以实现了。
现在分享出来,希望对看到这篇文章的朋友有所帮助。
第一步:创建项目和类库:
新建一个Windows控制台应用程序“MyDemo”,然后再新建一个C#类库“MyDemo.Config”,并在MyDemo中添加对MyDemo.Config的引用。
第二步:添加引用,新建配置文件:
在MyDemo.Config中先删除除System之外的所有引用,然后添加对System.Configuration库的引用,并新建一个配置文件App.config。
第三步:在MyDemo.Config里面添加一个静态类“ConfigManager”,代码里这样写:
using System; using System.Configuration; namespace MyDemo.Config { public static class ConfigManager { readonly static bool _Error; static Configuration _AppConfig; static ConfigManager() { string dllPath = string.Format( "{0}\\{1}.dll", AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory, "MyDemo.Config"); try { _AppConfig = ConfigurationManager.OpenExeConfiguration(dllPath); } catch(ConfigurationErrorsException) { _Error = true; } }