.Net里面,ConfigurationManager默认读取的是Web.config或者App.config但是,什么都放在这两个文件里面,感觉太多了,也不好管理配置。于是参考了下别人的资料,自己写了一个例子,例子实现的的是E:\App.config的文件,文件格式如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="books" type="ConfigurationDemo.BooksSection, ConfigurationDemo"/>
</configSections>
<books>
<book name="" author=""/>
</books>
</configuration> 要实现这样的功能,就要实现自己的ConfigurationSection,ConfigurationElementCollection,ConfigurationElement .ConfigurationSection public class BooksSection : ConfigurationSection
{
[ConfigurationProperty("books", IsRequired = true)]
public string Category
{ get
{
return (string)base["Category"];
} set
{
base["Category"] = value;
} }
[ConfigurationProperty("", IsDefaultCollection = true)]
public BookElementCollection Books
{ get
{
return (BookElementCollection)base[""];
} } } .ConfigurationElementCollection public class BookElementCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new BookElement();
} protected override object GetElementKey(ConfigurationElement element)
{
return ((BookElement)element).Name;
} public override ConfigurationElementCollectionType CollectionType
{
get
{
return ConfigurationElementCollectionType.BasicMap;
}
} protected override string ElementName
{
get
{
return "book";
}
}
public BookElement this[int index]
{ get
{
return (BookElement)BaseGet(index);
}
set
{
if (BaseGet(index) != null)
{
BaseRemoveAt(index);
}
BaseAdd(index, value);
} }
} .ConfigurationElement public class BookElement : ConfigurationElement
{ [ConfigurationProperty("name", IsRequired = true)]
public string Name
{
get
{
return (string)base["name"];
} set
{
base["name"] = value;
} } [ConfigurationProperty("author", IsRequired = true)] public double Author
{
get
{
return (double)base["author"];
} set
{
base["author"] = value;
}
} } .0Config文件 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="books" type="ConfigurationDemo.BooksSection, ConfigurationDemo"/>
</configSections>
<books>
<book name="" author=""/>
</books>
</configuration> .0读取 static void Main(string[] args)
{
string configPath = @"E:\App.config";
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = configPath; var configManager = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
if (configManager.HasFile)
{
BooksSection config = (BooksSection)configManager.GetSection("books");
Console.WriteLine(config.Books[].Name);
} }
结果 请按任意键继续. . .

.net分布在指定文件夹的web.confgi或者app.config的更多相关文章

  1. 递归法绑定文件夹到导航树&在指定文件夹下新建文件夹

    protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[&q ...

  2. 使用nginx的rewrite实现代理指定文件夹命令方法

    使用nginx的rewrite实现代理指定文件夹命令方法 使用nginx代理Tomcat,Tomcat公布web的时候通常都是带着项目名称的. 比方项目名称为"aven".那么公布 ...

  3. 怎么统计指定文件夹下含有.xml格式的文件数目

    如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...

  4. PHP批量清空删除指定文件夹内容

    PHP批量清空删除指定文件夹内容: cleancache.php <?php // 清文件缓存 $dirs = array( realpath(dirname(__FILE__) . '/../ ...

  5. C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名

    1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...

  6. [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件

    原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ...

  7. (Python)导出指定文件夹中as文件的完全限定类名

    AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...

  8. 将java的class文件放到一个指定文件夹下

    用javac执行java文件时,要把java文件的class文件放到指定文件夹下,注意文件夹要创建好,执行javac -d 文件夹 ***.java 如图: 在class文件夹下就出现了L的class ...

  9. Android 遍历sdcard中指定文件夹下的图片(jpg,jpeg,png)

    File scanner5Directory = new File(Environment.getExternalStorageDirectory().getPath() + "/scann ...

随机推荐

  1. test20181024 qu

    题意 分析 极似UVa11995 I Can Guess the Data Structure! 模拟即可,时间复杂度(--)\(O(n \log n)\) 旁边的L君:这题有两个坑点,我被卡了一次. ...

  2. 【转】inittab文件

    原文网址:http://blog.csdn.net/shuaishuai80/article/details/6202482 一.inittab文件背景(1)init进程的作用   使用uboot下载 ...

  3. 打印进度条——(progress bar才是专业的)

    # 打印进度条——(progress bar是专业的) import time for i in range(0,101,2): time.sleep(0.1) char_num = i//2 #打印 ...

  4. 修改numa和io调度优化mysql性能

    一.NUMA设置单机单实例,建议关闭NUMA,关闭的方法有三种:1.硬件层,在BIOS中设置关闭:2.OS内核,启动时设置numa=off:3.可以用numactl命令将内存分配策略修改为interl ...

  5. java web Servlet开发(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  6. Log4j(2)--日志等级

    Log4j根据日志信息的重要程度,分OFF.FATAL.ERROR.WARN.INFO.DEBUG.ALL 当然再细分的话 还有 FATAL(严重错误), 但是Log4j官方建议实际实用的话,Log4 ...

  7. QT 控制LED实验

    1.实验准备 在PC 机D:盘下创建文件夹qt-led,将光盘qt_led_exp 文件夹下的images 文件夹拷贝到E:盘下qt-led 文件夹qt-led 内 2.新建工程 新建一个Empty ...

  8. nodejs+express+ejs+mongoose实例

    nodejs+express+ejs+mongoose实例 nodejs学得异常痛苦,在这里将学的东西做一番整理,算是自我安慰吧.根据网上todo示例,用express和mongoose重写了部分代码 ...

  9. Meet Solr

    you should have a solid understanding of Solr's query and indexing capabilities, including how to pe ...

  10. Pthreads 信号量,路障,条件变量

    ▶ 使用信号量来进行线程间信息传递 ● 代码 #include <stdio.h> #include <pthread.h> #include <semaphore.h& ...