[ASP.NET]撰写自己的 Configuration 区段 Part 2: 将自己的组态组织成一个 Group

继前一篇文章:"不要再赖在 appSettings 的屋檐下了,写个自己的 Configuration 区段吧~" 之后,也许你已经着手,或已经将自己的设定值移到了自己的 section 中,但现在又有一个问题,就是:如果是不用模块的 section,全挤在同一个 section 中很难看,也不容易找。那么,本文将可以帮助你。


继前一篇文章:不要再赖在 appSettings 的屋檐下了,写个自己的 Configuration 区段吧~ 之后,也许你已经着手,或已经将自己的设定值移到了自己的 section 中,但现在又有一个问题,就是:如果是不用模块的 section,全挤在同一个 section 中很难看,也不容易找。那么,本文将可以帮助你。

如果你看过 ASP.NET 的 Web.config,应该会注意到默认的组态是有 Group 的,例如:

那我们是否也可以自己建一个 Section Group?答案当然是肯定的。

要作为 Configuration 的 SectionGroup 的类,必须要继承自 System.Configuration 命名空间(内含于组件 System.Configuration.dll)的 ConfigurationSectionGroup 类,例如我可以这样写:

在程序中,要包在 SectionGroup 的区段,要在 SectionGroup 中以属性来呈现,并且由 ConfigurationSectionGroup.Sections 属性中以字符串键值(与ConfigurationProperty声明相同)来取由 ConfigurationSection 对象,你可以利用 as 直接转型成自己的 Section 对象。

然后,在 Web.config 中就可以放:

在这里要注意一下,type 的设定如果是在 Web 网站项目,直接给类型名称即可,但若是 Web 应用程序项目,则要连同命名空间一起给,否则 ASP.NET 会无法找到该类型资讯。

接着再于 Web.config 中设定其组态值:

然后,建立一个测试用的 ASP.NET Web Form,填入下列的程序:

这段程序中也许你会注意到 mySectionGroup/mySection1 这样的路径,这是 ASP.NET 组态系统所定义的规则,如果你是用 Group 组织你的 section 的话,要用 [group_name]/[section_name] 的方式给值,这样 ConfigurationManager.GetSection() 才会取的到你要的 Section。(请注意:ConfigurationManager 中没有 GetSectionGroup 方法,所以你只能取 Section)

编译执行此项目,则你应该会看到这样的消息:

原文:大专栏  [ASP.NET]撰写自己的 Configuration 区段 Part 2: 将自己的组态组织成一个 Group


猜你喜欢

转载自www.cnblogs.com/chinatrump/p/11505154.html