.net分布在指定文件夹的web.confgi或者app.config
.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的更多相关文章
- 递归法绑定文件夹到导航树&在指定文件夹下新建文件夹
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[&q ...
- 使用nginx的rewrite实现代理指定文件夹命令方法
使用nginx的rewrite实现代理指定文件夹命令方法 使用nginx代理Tomcat,Tomcat公布web的时候通常都是带着项目名称的. 比方项目名称为"aven".那么公布 ...
- 怎么统计指定文件夹下含有.xml格式的文件数目
如何统计指定文件夹下含有.xml格式的文件数目?如题 ------解决思路----------------------Directory.GetFiles(@"路径", " ...
- PHP批量清空删除指定文件夹内容
PHP批量清空删除指定文件夹内容: cleancache.php <?php // 清文件缓存 $dirs = array( realpath(dirname(__FILE__) . '/../ ...
- C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名
1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...
- [转]C#中调用资源管理器(Explorer.exe)打开指定文件夹 + 并选中指定文件 + 调用(系统默认的播放类)软件(如WMP)打开(播放歌曲等)文件
原文:http://www.crifan.com/csharp_call_explorer_to_open_destinate_folder_and_select_specific_file/ C#中 ...
- (Python)导出指定文件夹中as文件的完全限定类名
AS3程序在编译的过程中,有一个特点是这样的,不管是项目中的类,还是标准库或者第三方库的类,编译的时候只会把用到的那些类文件编译进去,也就是说,某一些类,只要没有被主程序引用到,那这个文件是不会被编译 ...
- 将java的class文件放到一个指定文件夹下
用javac执行java文件时,要把java文件的class文件放到指定文件夹下,注意文件夹要创建好,执行javac -d 文件夹 ***.java 如图: 在class文件夹下就出现了L的class ...
- Android 遍历sdcard中指定文件夹下的图片(jpg,jpeg,png)
File scanner5Directory = new File(Environment.getExternalStorageDirectory().getPath() + "/scann ...
随机推荐
- Python3.x datetime模块
1.时间间隔(timedelta) 指定时间长度之间计算差值 #!/usr/bin/env python __author__ = 'realtiger' """ @ve ...
- Oracle简单的SQL处理
--单表插入insert into hr.job(job_id,job_title,min_salary) values('IT','Project Manager',50000); insert i ...
- 【Xamarin】Visual Studio 2013 Xamarin for Android开发环境搭建与配置&Genymotion
Xamarin Xamarin是基于Mono的平台. Xamarin旨在让开发者可以用C#编写iOS, Android, Mac应用程序,也就是跨平台移动开发. 下载资源 1,进入Xamarin官方网 ...
- An internal error occurred during: "Android Library Update".
打开 proj.android下的.cproject文件,把多余的CConfiguration配置节删掉,只留第一个就行了.
- ThinkPHP think-migration 简洁使用教程
ThinkPHP think-migration 简洁使用教程 migration:一种数据库的版本控制,让团队在修改数据库结构的同时,保持彼此的进度一致.帮你更简单的管理数据库.基于原生 think ...
- 国内yum源的安装(163,阿里云,epel)
----阿里云镜像源 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的 ...
- MPEG2-TS音视频同步原理
一.引言MPEG2系统用于视音频同步以及系统时钟恢复的时间标签分别在ES,PES和TS这3个层次中. 在TS 层, TS头信息包含了节目时钟参考PCR(Program Clock Reference ...
- Accept Job Offer Email Template
Accept Job Offer Email Template <Date> <Hiring Manager’s name> <Company name> < ...
- ddt数据驱动
数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt.data() 4.运行后用例会自动加载成三个单独的用例 5.测试结果: Testi ...
- C#中的参数关键字params
class 参数 { public void doSome(string str,params int[] values){ ) { ; i < values.Length; i++) { Co ...