文档章节

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

RyanXing
 RyanXing
发布于 2015/12/27 20:44
字数 391
阅读 6
收藏 0
点赞 0
评论 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;
           }
       }

   }
}

© 著作权归作者所有

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

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

Contac ⋅ 2015/11/09 ⋅ 0

在Web.config或App.config中的添加自定义配置

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

长平狐 ⋅ 2012/06/08 ⋅ 0

web.config详解

在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署...

酱哥哥 ⋅ 2014/03/17 ⋅ 0

gt1987/gt.rediscachemanager

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

gt1987 ⋅ 04/24 ⋅ 0

VirtualPathProvider注册的问题

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

科技小毛 ⋅ 2017/09/05 ⋅ 0

ASP.NET大闲话:ashx文件有啥用

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

junwong ⋅ 2012/04/18 ⋅ 0

ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码

I:关于如何Debug进MVC3源代码. 1.关于ASP.NET MVC3的源代码获取方法 ASP.NET MVC从1.0到3.0版本以来它的源代码是完全对外开放的,也正因为这个原因吸引了不少以前习惯使用WebForm的开发人员转...

晨曦之光 ⋅ 2012/06/05 ⋅ 0

如何:创建自定义 HTTP 模块

来源:MSDN 如何:创建自定义 HTTP 模块 本主题中描述的自定义 HTTP 模块阐释了 HTTP 模块的基本功能。在响应下面两个事件时调用该模块:BeginRequest 事件和 EndRequest 事件。这使该模...

夏春涛 ⋅ 2008/01/23 ⋅ 0

采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)

原文:采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目) 前言 之前有过2篇关于如何监控ASP.NET core项目的文章,有兴趣的也可以看看. 今天我们主要来介绍一下,如何使用...

杰克.陈 ⋅ 2017/12/29 ⋅ 0

.NET项目中存在多个web.config文件时的加载顺序

1、如果在当前运行页面所在的目录下有web.config文件,则查找是否存在所需要的节点,如果存在则返回结果,并停止下一步地查找。 2、如里所在目录不存在web.config配置或者配置文件里没有所需...

学习也休闲 ⋅ 2015/12/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring Email

一、普通邮件 maven依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.6.RELEASE</version>......

BobwithB ⋅ 8分钟前 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 11分钟前 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 11分钟前 ⋅ 0

IT行业的变革就像世界杯德国对战墨西哥一样难以预测[图]

最近在观看世界杯,尤其是昨天的比赛,上一届卫冕冠军德国队居然0:1告负墨西哥,这创造了历史,首先是墨西哥从来没赢过德国队,其次是德国队36年来首站没输过,再差也是打平,而这次,德国队...

原创小博客 ⋅ 30分钟前 ⋅ 0

解决CentOS6、7,/etc/sysconfig/下没有iptables的问题

一、Centos 6版本解决办法: 1.任意运行一条iptables防火墙规则配置命令: iptables -P OUTPUT ACCEPT 2.对iptables服务进行保存: service iptables save 3.重启iptables服务: service ...

寰宇01 ⋅ 41分钟前 ⋅ 2

数据库备份和恢复

备份:mysqldump -u root -p 数据库>磁盘路径 恢复:mysql -u root -p 数据库<sql脚本的磁盘路径

anlve ⋅ 今天 ⋅ 0

发生了什么?Linus 又发怒了?

在一个 Linux 内核 4.18-rc1 的 Pull Request 中,开发者 Andy Shevchenko 表示其在对设备属性框架进行更新时,移除了 union 别名,这引发了 Linus 的暴怒。 这一次 Linus Torvalds 发怒的原...

问题终结者 ⋅ 今天 ⋅ 0

在树莓派上搭建一个maven仓库

在树莓派上搭建一个maven仓库 20180618 lambo init 项目说明 家里有台树莓派性能太慢。想搭建一个maven私服, 使用nexus或者 jfrog-artifactory 运行的够呛。怎么办呢,手写一个吧.所在这个...

林小宝 ⋅ 今天 ⋅ 0

Spring发展历程总结

转自与 https://www.cnblogs.com/RunForLove/p/4641672.html 目前很多公司的架构,从Struts2迁移到了SpringMVC。你有想过为什么不使用Servlet+JSP来构建Java web项目,而是采用SpringMVC呢?...

onedotdot ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部