文档章节

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

RyanXing
 RyanXing
发布于 2015/12/27 20:44
字数 391
阅读 7
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

用户体验要素——以用户为设计中心

一、用户体验是什么 产品会与外界发生联系,人们如何去使用产品,人们使用产品无非解决两种问题,一,提高效率;二娱乐。而用户体验兼顾着功能和界面两个方面,为的是“提高人们的工作效率”...

铸剑为犁413
42分钟前
0
0
学习设计模式——代理模式

1. 认识代理模式 1. 定义:为其他对象提供一种代理以控制对这个对象的访问。 2. 组织结构: Proxy:代理对象,要实现与目标代理对象的相同的接口,这样就可以使用代理来代替具体的目标对象,...

江左煤郎
今天
1
0
java JDK动态代理

本篇随笔是对java动态代理中的JDK代理方式的具体实现。 首先需要定义一个接口,为其定义了两个方法:   public interface UserService { public void add(); public void delete(); } 然后需...

编程SHA
今天
2
0
轻松理解Dubbo分布式服务框架

Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的...

别打我会飞
今天
3
0
TypeScript基础入门之JSX(一)

转发 TypeScript基础入门之JSX(一) 介绍 JSX是一种可嵌入的类似XML的语法。 它旨在转换为有效的JavaScript,尽管该转换的语义是特定于实现的。 JSX在React框架中越来越受欢迎,但此后也看到了...

durban
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部