使用config自定义配置

public class OrdersSection : ConfigurationSection
	{
		[ConfigurationProperty("companyID", IsRequired = true)]
		public string CompanyID
		{
			get
			{
				return (string)base["companyID"];
			}
			set
			{
				base["companyID"] = value;
			}
		}

		[ConfigurationProperty("", IsDefaultCollection = true)]
		public OrderElementCollection Orders
		{
			get
			{
				return (OrderElementCollection)base[""];
			}
		}
	}
	public class OrderElementCollection : ConfigurationElementCollection
	{
		protected override ConfigurationElement CreateNewElement()
		{
			return new OrderElement();
		}

		protected override object GetElementKey(ConfigurationElement element)
		{
			return ((OrderElement)element).Number;
		}

		public override ConfigurationElementCollectionType CollectionType
		{
			get
			{
				return ConfigurationElementCollectionType.BasicMap;
			}
		}

		protected override string ElementName
		{
			get
			{
				return "order";
			}
		}

		public OrderElement this[int index]
		{
			get
			{
				return (OrderElement)BaseGet(index);
			}
			set
			{
				if (BaseGet(index) != null)
				{
					BaseRemoveAt(index);
				}
				BaseAdd(index, value);
			}
		}
	}
	public class OrderElement : ConfigurationElement
	{
		[ConfigurationProperty("number", IsRequired = true)]
		public string Number
		{
			get
			{
				return (string)base["number"];
			}
			set
			{
				base["number"] = value;
			}
		}

		[ConfigurationProperty("amount", IsRequired = true)]
		public double Amount
		{
			get
			{
				return (double)base["amount"];
			}
			set
			{
				base["amount"] = value;
			}
		}

		[ConfigurationProperty("lineItems", IsDefaultCollection = true)]
		public LineItemElementCollection LineItems
		{
			get
			{
				return (LineItemElementCollection)base["lineItems"];
			}
		}
	}
	public class LineItemElementCollection : ConfigurationElementCollection
	{
		[ConfigurationProperty("warehouseNumber", IsRequired = true)]
		public string WarehouseNumber
		{
			get
			{
				return (string)base["warehouseNumber"];
			}
			set
			{
				base["warehouseNumber"] = value;
			}
		}
		protected override ConfigurationElement CreateNewElement()
		{
			return new LineItemElement();
		}

		protected override object GetElementKey(ConfigurationElement element)
		{
			return ((LineItemElement)element).Number;
		}

		public override ConfigurationElementCollectionType CollectionType
		{
			get
			{
				return ConfigurationElementCollectionType.BasicMap;
			}
		}

		protected override string ElementName
		{
			get
			{
				return "lineItem";
			}
		}

		public LineItemElement this[int index]
		{
			get
			{
				return (LineItemElement)BaseGet(index);
			}
			set
			{
				if (BaseGet(index) != null)
				{
					BaseRemoveAt(index);
				}
				BaseAdd(index, value);
			}
		}
	}
	public class LineItemElement : ConfigurationElement
	{
		[ConfigurationProperty("number", IsKey = true, IsRequired = true)]
		public string Number
		{
			get
			{
				return (string)base["number"];
			}
			set
			{
				base["number"] = value;
			}
		}

		[ConfigurationProperty("description", IsRequired = true)]
		public string Description
		{
			get
			{
				return (string)base["description"];
			}
			set
			{
				base["description"] = value;
			}
		}
	}

	public class ConfigSection : ConfigurationSection
	{
		public ConfigSection()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
		[ConfigurationProperty("user", DefaultValue = "yanghong", IsRequired = true)]
		public string User
		{
			get { return (string)this["user"]; }
			set { this["user"] = value; }
		}

		[ConfigurationProperty("password", DefaultValue = "password", IsRequired = true)]
		public string PassWord
		{
			get { return (string)this["password"]; }
			set { this["password"] = value; }
		}

		[ConfigurationProperty("element")]
		public elementinfo Element
		{
			get { return (elementinfo)this["element"]; }
			set { this["element"] = value; }
		}
	}
	public class elementinfo : ConfigurationElement
	{
		public elementinfo() { }

		[ConfigurationProperty("element1", DefaultValue = "element1", IsRequired = true)]
		public string Element1
		{
			get { return (string)this["element1"]; }
		}

		[ConfigurationProperty("element2", DefaultValue = "element2", IsRequired = true)]
		public string Element2
		{
			get { return (string)this["element2"]; }
		}
	}
<configSections>
		<section name="orders" type="ConsoleApplication1.OrdersSection, ConsoleApplication1"/>
		<sectionGroup name="mygroup">
			<section name="mysection"
							 type="ConsoleApplication1.ConfigSection, ConsoleApplication1"
							  allowDefinition="Everywhere"
							   allowLocation="true"/>
		</sectionGroup>
	</configSections>
<orders companyID="2001">
		<order number="100001" amount="222.22">
			<lineItems warehouseNumber="02">
				<lineItem number="00-000-001" description="wii"/>
			</lineItems>
		</order>
		<order number="300001" amount="33.33">
			<lineItems warehouseNumber="99">
				<lineItem number="00-000-001" description="xbox 360"/>
				<lineItem number="00-000-003" description="playstation 3"/>
			</lineItems>
		</order>
	</orders>
	<mygroup>
		<mysection  user="用户" password="密码">
			<element element1="属性1" element2="属性2"></element>
		</mysection>
	</mygroup>
			OrdersSection section = ConfigurationManager.GetSection("orders") as OrdersSection;
			ConfigSection config = (ConfigSection)ConfigurationManager.GetSection("mygroup/mysection");
				
时间: 2024-10-04 17:27:33

使用config自定义配置的相关文章

ASP.NET添加和读取Web.Config自定义配置节

自定义节 1.首先在<configSections>中定义自定义配置节(例如Index.testSection)和对应的自定义配置节处理程序(例如NameValueSectionHandler) 2.然后添加节的内容 <configuration> <configSections> <sectionGroup name="Rewrite.NET"> <section name="Index" type="

App.config和Web.config配置文件的自定义配置节点

前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文件中的配置貌似出现了问题.查找节点发现是如下节点: <configSections> <section name="Test1" type="Demo.Section1,Demo"/> .............. </configSect

app.config 配置多项 配置集合 自定义配置

C#程序的配置文件,使用的最多的是appSettings 下的<add key="Interval" value="30"/>,这种配置单项的很方便,但是配置集合就不方便了(当然你可以用逗号分隔,key=key1,key2,key3……但是你还是不知道有多少个集合).现在给出解决方案. 需求:程序超级管理员采用这种设置方式,在app.config中配置的方式,可以配置多个.登陆成功后,读取config,看我是不是超级管理员.(当然,这个需求是很扯淡的,因

创建自定义配置节点(web.config和app.config都适用)

无论是web程序.windows程序.windows service程序,配置文件都是少不了的.我们都习惯了将连接字符串放在ConnectionString节点中,将程序的设置放在appSetting节点中.配置文件的管理程序为我们提供了方便的管理方式,那么,我们如何自定义配置节点呢? 有两种方法,其一,继承IConfigurationSectionHandler,通过实现Create方法.这种方法的灵活度非常大,我们需要动手解析自定义节点的XmlNode,所以,实现起来也比较复杂.其二,继承C

spring-boot 速成(4) 自定义配置

spring-boot 提供了很多默认的配置项,但是开发过程中,总会有一些业务自己的配置项,下面示例了,如何添加一个自定义的配置: 一.写一个自定义配置的类 package com.example.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component

C# 快捷使用自定义配置节点

C#除了appSettings和connectionStrings默认配置外还允许用户自定义使用配置.C# 提供3中简单的自定义配置,配置文件如下 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="Config1" type="System.Configuration.S

MVC自定义配置

ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持多种跨平台的配置文件格式(如XML, Json, Ini和环境变量) 标准的配置文件如project.json不再包括任何自定义的配置信息. 自定义的配置完全由开发者另行建立和加载 自定义的配置信息可

Web.config自定义节点configSections

原文地址:http://www.cnblogs.com/huc87/archive/2009/05/06/1450981.html 1.为什么需要自定义节点 为了增加应用程序的可移植性,通常网站需要配置一些自定义的节点,例如:文件上传的路径等,再深入的应用,可以定义工厂方法需要创建的类. 2.configSections使用方法 configSections节点下定义自定义节点可以帮我们实现我们自己的节点. 首先定义自己的节点,定义方法如下: <configSections>    <s

ASP.NET 5 入门 (2) – 自定义配置

ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext) 理解和概述 所说,ASP.NET 5的具有全新的配置机制,我们可以通过以下几点来进行理解: 支持多种跨平台的配置文件格式(如XML, Json, Ini和环境变量) 标准的配置文件如project.json不再包括任何自定义的配置信息. 自定义的配置完全由开发者另行建立和加载 自定义的配置信息可