自定义配置节点configSections的使用
//App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--添加自定义配置节点,type:解析类名,程序集名-->
<section name="PersonSetion" type="CommonConfig.PersonSectionHandler,CommonConfig"/>
</configSections>
<!--自定义节点内容-->
<PersonSetion>
<PersonInfo name="Name" Value="Mr Lin" ReadOnly="true"></PersonInfo>
<PersonInfo name="Department" Value="Development" ReadOnly="true"></PersonInfo>
<PersonInfo name="Position" Value="Software Engineer" ReadOnly="true"></PersonInfo>
</PersonSetion>
</configuration>
//解析自定义节点
using System;
using System.Configuration;
using System.Xml;
using Model;
namespace CommonConfig
{
/// <summary>
/// 实现接口:IConfigurationSectionHandler,解析自定义配置节点,
/// </summary>
public class PersonSectionHandler : IConfigurationSectionHandler
{
public object Create(object parent, object configContext, XmlNode section)
{
//解析配置文件信息,返回对象
Person person = new Person();
if (section != null)
foreach (XmlNode item in section.SelectNodes("PersonInfo"))
{
switch (item.Attributes["name"].InnerText)
{
case "Name":
person.Name = item.Attributes["Value"].InnerText;
person.IsNameReadOnly = Convert.ToBoolean(item.Attributes["ReadOnly"].InnerText);
break;
case "Department":
person.Department = item.Attributes["Value"].InnerText;
person.IsDepartmentReadOnly = Convert.ToBoolean(item.Attributes["ReadOnly"].InnerText);
break;
case "Position":
person.Position = item.Attributes["Value"].InnerText;
person.IsPositionReadOnly = Convert.ToBoolean(item.Attributes["ReadOnly"].InnerText);
break;
default:
break;
}
}
return person;
}
}
}
//实体类
namespace Model
{
public class Person
{
private string name;
private string department;
private string position;
private bool isNameReadOnly;
private bool isDepartmentReadOnly;
private bool isPositionReadOnly;
/// <summary>
/// 姓名
/// </summary>
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
/// 部门
/// </summary>
public string Department
{
get { return department; }
set { department = value; }
}
/// <summary>
/// 职位
/// </summary>
public string Position
{
get { return position; }
set { position = value; }
}
/// <summary>
/// 名称是否只读
/// </summary>
public bool IsNameReadOnly
{
get { return isNameReadOnly; }
set { isNameReadOnly = value; }
}
/// <summary>
/// 部门信息是否只读
/// </summary>
public bool IsDepartmentReadOnly
{
get { return isDepartmentReadOnly; }
set { isDepartmentReadOnly = value; }
}
/// <summary>
/// 职位信息是否只读
/// </summary>
public bool IsPositionReadOnly
{
get { return isPositionReadOnly; }
set { isPositionReadOnly = value; }
}
}
}
//测试配置
using System;
using System.Configuration;
using System.Windows.Forms;
using Model;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SetText();
}
private void SetText()
{
//会调用object Create(object parent, object configContext, XmlNode section)
Person person= (Person)ConfigurationSettings.GetConfig("PersonSetion");
if (person != null)
{
txtDepartment.Text = person.Department;
txtDepartment.ReadOnly = person.IsDepartmentReadOnly;
txtName.Text = person.Name;
txtName.ReadOnly = person.IsNameReadOnly;
txtPosition.Text = person.Position;
txtPosition.ReadOnly = person.IsPositionReadOnly;
}
}
}
}
转转:http://blog.sina.com.cn/s/blog_5b9b514b0100p5gq.html
自定义配置节点configSections的使用的更多相关文章
- VS2012 常用web.config配置解析之自定义配置节点
在web.config文件中拥有一个用户自定义配置节点configSections,这个节点可以方便用户在web.config中随意的添加配置节点,让程序更加灵活(主要用于第三方插件的配置使用) 自定 ...
- App.config和Web.config配置文件的自定义配置节点
前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文 ...
- ASP.NET系列:自定义配置节点的复用
appSettings太简单,为每个程序自定义配置节点太复杂,因此要解决app.config&web.config自定义配置的复用问题. 1.读取不依赖SectionName,根节点可以定义为 ...
- .Net 配置文件--继承ConfigurationSection实现自定义处理类处理自定义配置节点
除了使用继承IConfigurationSectionHandler的方法定义处理自定义节点的类,还可以通过继承ConfigurationSection类实现同样效果. 首先说下.Net配置文件中一个 ...
- C#创建自定义配置节点
转载:http://www.educity.cn/develop/495003.html 在.Net应用程序中我们经常看到VS为我们生成的项目工程中都会含有app.config或者web.connfi ...
- App.Config自定义配置节点
配置文件: <?xml version="1.0" encoding="utf-8"?> <configuration> <con ...
- C# 快捷使用自定义配置节点
C#除了appSettings和connectionStrings默认配置外还允许用户自定义使用配置.C# 提供3中简单的自定义配置,配置文件如下 <?xml version="1.0 ...
- C# 创建自定义配置节点1
转载:http://www.educity.cn/develop/495003.html 在.Net应用程序中我们经常看到VS为我们生成的项目工程中都会含有app.config或者web.connfi ...
- .Net 配置文件——继承ConfigurationSection实现自定义处理类处理自定义配置节点
除了使用继承IConfigurationSectionHandler的方法定义处理自定义节点的类,还可以通过继承ConfigurationSection类实现同样效果. 首先说下.Net配置文件中一个 ...
随机推荐
- SpringMVC基础01——SpringMVC的知识结构体系
1.前言 目前在各大互联网公司使用最热门的技术莫过于SpringBoot以及在其基础之上的SpringCloud,然而学习这些技术的基础在于学好Spring和SpringMVC,准确来说SpringM ...
- 我所了解的https
http大家多少都有些了解,毕竟要上网的话是肯定会接触到它的.http有个很明显的缺点,就是传输是明文的,很不安全.针对这个情况,就推出了https,也就是http+ssl/tls. 对于明文不安全的 ...
- 007-SaltStack之修改salt-minion id
1. 需求背景 之前使用saltstack添加的主机默认使用了hostname作为salt-minion id,而主机名如果没有做规范和规划,是比较难区分属于什么业务或者机器的.我们需要修改salt- ...
- 循环 for 读取文件
cat filename(待读取的文件) | while read line do echo $line done
- visual studio密钥
企业版:NJVYC-BMHX2-G77MM-4XJMR-6Q8QF 专业版:KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
- outlook 使用临时邮箱 使用旧数据
控制面板-->邮件32位 显示配置文件 删除再添加 具体可参考 https://blog.csdn.net/liuyukuan/article/details/80043840 偷懒,图片从网上 ...
- 【模板】Lucas定理
代码如下 #include <bits/stdc++.h> using namespace std; typedef long long LL; const int maxn=1e5+10 ...
- ZROI 19.08.04模拟赛
传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "这应该是正睿OI历史上第一次差评破百的比赛." "这说明来正睿集训的人越来越多了." &qu ...
- 判断一个对象是否为空? js
其实开发过程中常常会遇到判断对象和数组是否为空?下面介绍3种判断对象是否为空 1. 最常见的思路,for...in...遍历属性,为真则为“非空数组”:否则为“空数组” function judgeO ...
- python出现SyntaxError: Non-ASCII character '\xe6' in file \的错误
出现这个问题的主要原因是因为python2的编码是ASCII码,文件中有中文的话就得使用utf8编码,只需要在文件的头部加上以下其中一种标注: 一.在文件头部添加如下注释码: # coding=< ...