创建自定义配置结
介绍:
Web.Config文件由许多不同的配置结组成。用户可以根据程序需要进行配置。在
ASP.NET 2.0中用户可以创建自定义的配置结。本文将对此进行介绍
继承ConfiguraitonSection类:
我将创建一个简单的配置结。该配置结是一个允许用户书写名称的数据访问类。首先创建一个继承了ConfiguraitonSection的类。代码如下:
public class MyDataAccessSection : ConfigurationSection { |
MyDataAccessSection类包含一个名为dataAccessClassName的属性,该属性包含数据访问类的名称。下面是MyDataAccessSection类的完整代码
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
using System; using System.Data; using System.Configuration; using System.Web; namespace MyClassLibrary { public class MyDataAccessSection : ConfigurationSection { private static ConfigurationProperty propDataAccessClass = null; public MyDataAccessSection() { MyDataAccessSection.propDataAccessClass = new ConfigurationProperty( "dataAccessClassName", typeof(string), "MyDataAccessClass", ConfigurationPropertyOptions.IsRequired); } [ConfigurationProperty("dataAccessClassName")] public string DataAccessClassName { get { return (string)base[MyDataAccessSection.propDataAccessClass]; } set { base[MyDataAccessSection.propDataAccessClass] = value; } } } } |
.
下面逐步分析代码。在构在函数汇总定义了一个ConfigurationProperty属性的字段。名称为”dataAccessClassName”,类型为string,默认值:”MyDataAccessClass”. ConfigurationPropertyOptions设置为”IsRequired”,表示属性为必须。然后定义了名位DataAccessClassName的属性,[ConfigurationProperty("dataAccessClassName")]修饰
设置Web.Config文件:
使用MyDataAccessSection前想要在Web.Config文件中进行设置。需要告知web.config你所使用的自定义配置结。下面代码演示如何注册一个自定义配置结
<configSections> <section name="dataAccessSection" type="MyClassLibrary.MyDataAccessSection,MyClassLibrary"/> </configSections> |
Name属性设置data access配置结的名称,type属性设置配置界的类型,MyClassLibrary.MyDataAccessSection表示类,后面的MyClassLibrary是程序集的名称
声明一个自定义配置结
Declaring the Custom Section:
声明一个自定义配置结非常简单,只需要设置名称和属性
<dataAccessSection dataAccessClassName="GridViewGuyDataAccessClass"> </dataAccessSection> |
访问自定义配置结:
访问自定义配置结也很简单,下面的代码演示如何访问信息
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
// Get the custom section MyDataAccessSection section = (MyDataAccessSection) ConfigurationManager.GetSection("dataAccessSection"); // display the custom section Response.Write(section.DataAccessClassName); |