设为首页 加入收藏

TOP

ASP.NET MVC 学习笔记-7.自定义配置信息(后续)(一)
2019-09-02 23:12:57 】 浏览:28
Tags:ASP.NET MVC 学习 笔记 -7. 定义 配置 信息 后续

自定义配置信息的高级应用

通过上篇博文对简单的自定义配置信息的学习,使得更加灵活的控制系统配置信息。实际项目中,这种配置的灵活度往往无法满足项目的灵活度和扩展性。

比如,一个配置信息有三部分组成,而每部分中有包括一些配置信息。仅仅使用简单的自定义配置无法满足,因此,需要提供更多的自定义配置方法来灵活实现。

针对配置信息中包括配置列表和配置项的要求,主要使用.Net Framework中的以下两个类来实现:

ConfigurationElement:配置文件中的一个配置项

ConfigurationElementCollection:配置文件中的一个配置项集合

ConfigurationSection:配置文件中的一个配置节信息。

使用下面的表格能够更好说明三者之间的关系:

ConfigurationSection

1:N

ConfigurationElementCollection

1:N

ConfigurationElement <add …/>

ConfigurationElement <add …/>

ConfigurationElement <add …/>

针对以上知识点,使用一个项目实例逐渐展开。

项目需求:

库位管理系统需要实现仓库的全方位展示,设计多种数据(SQLserver、Oracle、MySQL等),每个数据库连接字符串的加密方式存在无法统一的情况。

配置文件的规划:

 针对以上需求,对数据库配置文件信息的规划为:

DBConnectionConfiguration(ConfigurationSection)

 

 

ConnectionStrings(ConfigurationElementCollection)

 

 

ConnectionString1(ConfigurationElement)

 

name

description

connectionString

providerName

connectionDecryptName

 

ConnectionString2(ConfigurationElement)

 

name

description

connectionString

providerName

connectionDecryptName

DataProviders(ConfigurationElementCollection)

 

 

DataProvider1(ConfigurationElement)

 

name

description

type

 

DataProvider2(ConfigurationElement)

 

name

description

type

 

ConnectionDecrypts(ConfigurationElementCollection)

 

 

ConnectionDecrypt(ConfigurationElement)

 

name

description

type

 

ConnectionDecrypt(ConfigurationElement)

 

name

description

type

 

配置信息实体的定义:

针对以上配置信息,先对配置信息对应的实体进行设计:

1. DBConnectionConfiguration

它作为配置文件中的一个配置节存在,配置节名称定义为TT.connectionManager,需要继承自ConfigurationSection类,同时,它还需要定义三个属性,分别是ConnectionStrings、DataProviders、ConnectionDecrypts,这三个属性都是列表信息,因此是ConfigurationElementCollection的自定义子类。

 1     /// <summary>
 2     /// 数据库连接配置信息
 3     /// </summary>
 4     public class DBConnectionConfiguration : ConfigurationSection
 5     {
 6         private const string SECION_NAME = "TT.connectionManager";
 7 
 8         /// <summary>
 9         /// 获取数据库连接配置信息
10         /// </summary>
11         public static DBConnectionConfiguration GetConfig()
12         {
13             var config = ConfigurationManager.GetSection(SECION_NAME) as DBConnectionConfiguration;
14             return config;
15         }
16 
17         /// <summary>
18         /// 数据库连接字符串配置集合
19         /// </summary>
20         [ConfigurationProperty("connectionStrings")]
21         public ConnectionStringCollection ConnectionStrings
22         {
23             get
24             {
25                 return (ConnectionStringCollection)base["connectionStrings"];
26             }
27         }
28 
29         /// <summary>
30         /// DataProvider配置集合
31         /// </summary>
32         [ConfigurationProperty("dataProviders", IsRequired = true)]
33         public DataProviderCollection DataProviders
34         {
35             get
36             {
37                 return (DataProviderCollection)base["dataProviders"];
38             }
39         }
40 
41         /// <summary>
42         /// 连接字符串加密方式
43         /// </summary>
44         [ConfigurationProperty("connectionDecrypts", IsRequired = false)]
45         public ConnectionDecryptCollection ConnectionDecrypts
46         {
47             get
48             {
49                 return (ConnectionDecryptCollection)base["connectionDecrypt
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇匿名对象解析 下一篇C#基础知识回顾:1.由WeakReferen..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目