.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);
} }
结果 请按任意键继续. . .

最新文章

  1. 实时控制软件设计 第一次作业 Draw
  2. 学习使用 CSS3 制作网站面包屑导航效果
  3. 【转】MySQL 数据库存储引擎
  4. Ubuntu 常用工具、指令安装
  5. C# 复习(1) 委托与事件
  6. reduceByKeyLocally
  7. php sprintf用法
  8. ACM 数塔
  9. Java模拟耗时任务异步执行
  10. Xshell连接到centos提示Could not connect to (port 22): Connection failed
  11. 调用 setState 之后发生了什么?
  12. javascript arguments介绍
  13. win10 SVN不能显示图标
  14. day 26 初识进程,验证客户端合法性
  15. soapUI-Conditional Goto
  16. Javascript库的产生和解读
  17. 【bzoj4013】 HNOI2015—实验比较
  18. 【php】Apache无法自己主动跳转却显示文件夹与php无法连接mysql数据库的解决方式
  19. c语言符号常量与常变量的区别?
  20. 基于Oracle的EntityFramework的WEBAPI2的实现(二)——使用DbFirst

热门文章

  1. streamsets docker 安装试用
  2. C语言多线程pthread库相关函数说明
  3. ①Jenkins集成—入门安装使用
  4. windows 如何查看端口占用进程ID 进程名称 强制结束进程
  5. .NET实现WebSocket服务端即时通信实例
  6. linux Xinetd服务简介
  7. Windows Installer (MSI)知识学习
  8. Javascript继承机制的设计思想
  9. mysql修复表
  10. [Delphi] 调用ocx