文档章节

web.config 或 app的config中自定义节点

RyanXing
 RyanXing
发布于 2015/12/27 20:44
字数 391
阅读 6
收藏 0

<?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

共有 人打赏支持
RyanXing
粉丝 0
博文 21
码字总数 6521
作品 0
东城
项目经理
ASP.NET一个网站内存放多个config文件(Web.Config文件中configSource

每个网站里都会有一个web.config文件。修改Web.config文件会导致IIS重启,就是随意的回车一下也会导致重启。微软建议,不要将需要修改的配置内容保存在web.config中。而是单独放在一个confi...

我吃火锅你吃调料-快给我打钱-房子不要钱
2015/11/09
0
0
在Web.config或App.config中的添加自定义配置

.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持。最近看到一些项目中还在自定义xml文件做程序的配置,所以忍不住写一篇用系统自定义配...

长平狐
2012/06/08
616
0
gt1987/gt.rediscachemanager

基于stackexchange.redis的redis客户端封装 配置化 支持redis各种数据类型的基本操作 支持读写分离 支持在客户端层面实现的redis集群 支持多组redis集群 数据同步 异常切换 支持跨IDC的高可用...

gt1987
04/24
0
0
VirtualPathProvider注册的问题

MSDN里有描述,VirtualPathProvider只允许在两个地方注册: 1. App_Code目录中任意类的AppInitialize静态方法。 2. Global.asax中的Application_Start方法中。 而我想知道是,有没有什么办法...

科技小毛
2017/09/05
0
0
ASP.NET大闲话:ashx文件有啥用

在VS中右击项目,添加新项,我们找到.ashx文件在新建项模板中叫做“一般处理程序”,那么这个一般处理程序用来干吗的呢? 我们可以这样地简单理解,嗯,不需搞得太复杂,它就类似.aspx文件,...

junwong
2012/04/18
626
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

golang使用protobuf简易教程

参考文档:https://blog.csdn.net/qq_15437667/article/details/78425151 一、安装protobuf # 去github.com/golang/protobuf下载源码包,# 拷贝到 $GOPATH/src/github.com/golang/protobuf......

科陆李明
25分钟前
0
0
8月16日 上课截图

小丑鱼00
40分钟前
0
0
Nginx负载均衡、配置SSL

Nginx负载均衡 在 /usr/local/nginx/conf/vhost/ 下创建一个文件,写入以下内容 加载后用curl测试可以访问设置的网站 www.qq.com ssl原理 HTTPS是一种加密的http协议,如果HTTP通信的数据包在...

黄昏残影
44分钟前
0
0
String 源码阅读笔记

String源码阅读 本人学习笔记,内容来自于阅读源码和其他博客,水平有限,如有错误,烦请指正。 详情参考: Java 7 源码学习系列(一)——String 请别再拿“String s = new String("xyz");...

等到烟火清凉_
44分钟前
4
0
Coding and Paper Letter(十二)

资源整理。<!-- more --> 1 Coding: 1.R语言生成的ppt,GeoStat2018会议报告,时空模式分析的报告。 geostat18 2.欧空局哨兵和SMOS的工具集,关于对地观测数据的处理与分析的docker容器。 ...

胖胖雕
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部