日期:2008-12-08  浏览次数:20954 次

      上一篇文章中方法的目的是把所有配置文件合并,然后可以用系统的API来读取。但是仍是比较繁琐,必须为每个项目建立一个配置文件,每个都得加上一个file属性,而且类库项目还不能拥有支持运行库的配置文件。可以转换一个思路就是采用自定义的XML文件来包含所有的配置信息,然后建立一个工具类来访问。这样的话,所有的项目都是平等的了,只要调用该工具类的方法就可以读取相应的配置信息了,而且不用去”迁就”系统的API,可以把配置信息放在自定义的节点内,而不是必须放在<appSettings>里。 
        建立一个类似于下面的XML文件:
        <?XML version="1.0" encoding="utf-8" ?> 
            <configuration>
                <section Scope="Common">
                    <!--Database connection strings -->
                    <MainConnString Category="SQLServer">data source=(local);initial catalog=mainDb;user=sa;pwd=</MainConnString>
                    <TestConnString Category="Access">Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Northwind.mdb</TestConnString>  

                    <!--  file paths -->
                    <ToolPath1 Category="C#">D:\Tool1.exe</ToolPath1>
                    <ToolPath2 Category="C++">D:\Tool2.exe</ToolPath1>
                    <LogFilePath Category="Log">D:\errorLog.log</LogFilePath>
                </section>
                <section Scope="WebApp">
                    <!-- DateTime format strings -->
                    <DateFormat>yyyy-MM-dd</DateFormat>
                    <DateTimeFormat>yyyy-MM-dd hh:mm</DateTimeFormat>
                    <DateYearFormat>yyyy</DateYearFormat>
                </section>
        </configuration>

        这样我们就可以建立起一个自定义配置文件,尤其是当解决方案内包含多个程序(Project)的时候,每个section对应一个配置组,其Scope属性表示该配置组的范围,如Common表示通用配置节点,而WebApp则表示专在Web项目中使用的配置节点。同时在一个section中,每个节点表示一个具体的配置项,而这个配置项又可以添加自定义的属性,如上面的Category;最后这个文件还很容易进行写操作,这样也可以比较容易地为用户建立起一个可视化的配置页面。

        剩下的工作就是如何来读写配置文件了。在.NET中读写这样的结构简单的XML文件不是什么难事,就不再赘述了 :-)