zoukankan      html  css  js  c++  java
  • 自定义配置节点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

  • 相关阅读:
    登录界面
    动手动脑
    关于二进制
    Java考试
    D
    威尔逊定理 k!%p
    11.46.2020质检
    最长上升序列输出方案
    问题 G: 汽车的最终位置
    奶牛大会(二分)
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/5977303.html
Copyright © 2011-2022 走看看