如何使用.NET配置文件(一)

 .NET的应用程序配置文件,使用的是XML格式。相对INI文件来说,它的功能要强上不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在程序中修改配置文件的数据(当然不是指不能,不过不是本文讨论的范围)。本文主要目的是探讨如何扩展配置文件,并在其加入各种自定义配置信息。

    .NET的应用程序配置文件,使用的是XML格式。相对INI文件来说,它的功能要强上不少,而且具有很强的可扩展性。它的缺点是不能直接进行写操作,也就是说,不能直接在程序中修改配置文件的数据(当然不是指不能,不过不是本文讨论的范围)。本文主要目的是探讨如何扩展配置文件,并在其加入各种自定义配置信息。
   
    1. 使用<appSettings>
        简单的配置信息,可以直接放入<appSettings>标记中。如:
<?xml version="1.0" encoding="utf-8"?>
  <appSettings>
 <add key="LogFile" value="d:\log\debug.log"/>
  </appSettings> 
</configuration>
        相应访问代码如下:       
string fileName = System.Configuration.ConfigurationSettings.AppSettings.Get("LogFile");
 
    2. 自定义配置节(section)名称
        比如,我们要使用下面的配置结构,将配置信息归类分组:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- 需要在此处加入自定义配置声明 -->
<!-- 以下是自定义配置的内容 -->
<myConfig>
  <myDictionary>
    <add key="Area" value="Fuzhou"/>
    <add key="Device" value="Printer"/> 
    <add key="Customer" value="Muf"/>
  </myDictionary>
  <myNameValue>
    <add key="Area" value="Fuzhou"/>
    <add key="Device" value="Printer"/> 
    <add key="Customer" value="Muf"/>
  </myNameValue>
  <myInfo
    Area="Fuzhou" Device="Printer" Customer="Muf"
  />
</myConfig>
</configuration>

        但是这样是不行的。我们必须要在配置文件前面加入声明:
  <!-- 以下是自定义配置的声明 -->
  <configSections>
    <sectionGroup name="myConfig">
         <section name="myDictionary"
            type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="myNameValue"
            type="System.Configuration.DictionarySectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="myInfo"
            type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
  </configSections> 

        把这一段放入配置文件中,我们的配置结构就可以正常使用了。声明中,<sectionGroup>用来定义不含配置数据的节的名称。<section>用来定义含有自定义配置数据的节的名称。<section type>用来指定定义配置数据的类型。.NET已经定义了3种配置类型:
  a. NameValueSectionHandler
        相应访问代码如下:        
NameValueCollection myNameValue= (NameValueCollection)System.Configuration.ConfigurationSettings.AppSettings.Get(@"myConfig\myNameValue");
string Area = myNameValue["Area"];
string Device= myNameValue["Device"];
string Customer = myNameValue["Customer "];

  b. DictionarySectionHandler
        相应访问代码如下:        
Hashtable myNameValue= (Hashtable)System.Configuration.ConfigurationSettings.AppSettings.Get(@"myConfig\myDictionary");
string Area = myNameValue["Area"];
string Device= myNameValue["Device"];
string Customer = myNameValue["Customer "];

  c. SingleTagSectionHandler
        相应访问代码如下:        
Hashtable myNameValue= (Hashtable)System.Configuration.ConfigurationSettings.AppSettings.Get(@"myConfig\myInfo");
string Area = myNameValue["Area"];
string Device= myNameValue["Device"];
string Customer = myNameValue["Customer "];

        这三种类型的详细信息,可以参考 MSDN 文档。同时.NET 还定义了IgnoreSectionHandler类型,为 System.Configuration 之外的系统所读取和处理的配置节提供节处理程序定义。
        除此之外,.NET提供了IConfigurationSectionHandler接口,这样我们还可以自行进行扩展,以设计出我们自已的配置形式。

(待续)

时间: 2024-10-27 07:44:05

如何使用.NET配置文件(一)的相关文章

QSettings读写注册表、配置文件

简述 一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表.读写配置文件. 关于QSettings的使用前面已经介绍过了,比较详细,见"更多参考",下面介绍下QSettings常用功能-读写注册表.配置文件. 简述 优点 读写注册表 一般存储 一般读取 分目录存储 替换applicationName 分组 读写配置文件 一般存储 一般读取 分组存储 分组读取 分目录存储 删除内容 疑问解释 更多参考 优点 无需指定注册表路径 一般

Linux Bash的环境配置文件

当用户登陆时,将读取以下两个配置文件: 1)/etc/profile:系统全局配置文件,最好不要修改该文件 2)~/.bash_profile或~/.bash_login或~/.profile:用户私有的配置文件 全局配置文件 - /etc/profile /etc/profile会依次调用下列文件: 1)/etc/inputrc 2)/etc/profile.d/*.sh:如果你需要帮所有用户设置一些共享的命令别名时,可以在这个目录下创 建扩展名为.sh的文件 3)/etc/sysconfig

解决spring jpa中配置文件报&#039;jpa:repositories&#039;的问题

一.问题描述     使用spring jpa,报no declaration can be found for element 'jpa:repositories'错误的解决方案     Multiple annotations found at this line: - cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'jpa:reposi

如何优化Urchin配置文件数据库的磁盘空间

Urchin 的报告数据存储在各个配置文件所独有的每月数据库中(注:Urchin分析后的数据是按月归档),这些数据库一般位于 Urchin 的 data/reports 目录下.每个配置经过处理的数据库大小为原日志大小的5% 至10%. 默认情况下,Urchin 会保留每月的这些配置文件数据库,但经过长时间的数据积累数据量会变大,导致Urchin处理后的数据占用空间越来越大,并且在用户查看时也会降低Urchin的响应效率.因此,需要优化Urchin 配置文件每月数据库的磁盘存储空间. 优化 Ur

Ibatis XML 配置文件注释引起错误及解决方案

Ibatis XML 配置文件注释引起错误及解决方案 最近在使用Ibatis组件进行一个项目开发,在运行时发现提示如下错误信息: type 异常报告 消息 描述服务器遇到一个内部错误 (), 无法完成此请求. 异常 javax.servlet.ServletException: java.lang.ExceptionInInitializerError根本原因 java.lang.ExceptionInInitializerError根本原因 java.lang.RuntimeException

Nginx配置文件详细说明

在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data;     #启动进程,通常设置成和cpu的数量相等 worker_processes  1; #全局错误日志及PID文件 error_log  /var/log/nginx/error.log; pid        /var/run/nginx.pid; #工作模式及连接数上限 events {     use   epoll;             #epoll是多

水星路由器怎么进行备份 水星路由器备份配置文件方法

水星路由器怎么备份?有时候,为了防止宽带账号与密码忘记,我们通常都会通过备份路由器配置文件,方便今后还原.比如春节期间,小编将工作地的无线路由器带回了家临时使用,到老家后需要重新配置上网账号,为了防止工作地的宽带账号与密码忘记或丢失,小编将此前的路由器配置进行了备份,方便春节后回到工作地后再恢复. 话不多说,今天电脑网管之家小编为大家带来的主题是水星路由器备份配置文件与恢复方法,感兴趣的朋友,快来看看吧. 水星路由器怎么备份?方法步骤 一.首先需要登录水星路由器设置管理界面,先在电脑浏览器中,打

虚拟化-xen4如何通过配置文件添加pci设备

问题描述 xen4如何通过配置文件添加pci设备 操作系统为CentOS6.5 配置文件路径为/var/lib/xend/domains/虚拟机UUID/config.sxp 通过xm creat命令创建半虚拟化虚拟机 如何在该文件中添加PCI设备呢?PCI设备的设备号为05:0.0

主主+ lvs keepalived 配置文件

主主+ lvs keepalived 配置文件 主主搭建 rpm -qa | grep mysql  yum remove -y  yum install -y /etc/init.d/mysql stop mysqld_safe --user=mysql --skip-grant-tables --skip-networking & use mysql; UPDATE user SET Password=PASSWORD('mysql') where USER='root'; /etc/ini

配置文件-zookeepe在windows下无法启动

问题描述 zookeepe在windows下无法启动 zookeeper版本为zookeeper-3.4.6,配置文件内容为:tickTime=2000initLimit=10syncLimit=5dataDir=F:zookeeper-3.4.6datadataDirLog=F:zookeeper-3.4.6logclientPort=2181 解决方案 JDK有没有安装?看样子好像是没找到.