今天在使用Nlog的时候,发现了一个之前没注意的问题。
以前,我的app配置文件都是这么写的,当然配置比较多的时候会改用xml。
如果<appSettings>节点中的内容很多的话,我自己有时候都分不清哪个是做什么的,可能朋友们会说,你加个注释不就行了。但是可不可以把一些相同的配置放在一起呢,就像上面的nlog一样。先试着改造下配置文件
<configSections> <section name="mySection" type="ConfigSolution.ConfigSectionHandler,ConfigSolution"></section> </configSections> <mySection> <port CPort="40001" WPort="40002" SPort="50000"></port> <coustomAssembly CommandsAssembly="HX.Components.Command.Collection" CommandMessagesAssembly="HX.Components.CommandMessage.Collection"></coustomAssembly> </mySection>
那么,怎么获取section里的值呢?从configSections 元素开始到网上风暴了一番。ConfigurationSection 类
然后知道可以通过ConfigurationManager类的GetSection方法获取到配置文件的信息。(如果应用程序需要以只读方式访问其自身配置,则对于 Web 应用程序,建议使用 GetSection() 重载方法;对于客户端应用程序,建议使用 ConfigurationManager.GetSection 方法。----MSDN)
var mySection = ConfigurationManager.GetSection("mySection");
运行一下程序试试,迎来了第一个异常。System.Configuration.ConfigurationErrorsException: 创建 mySection 的配置节处理程序时出错: 类型“ConfigSolution.ConfigSectionHandler”不从“System.Configuration.IConfigurationSectionHandler”继承。 ---> System.TypeLoadException: 类型“ConfigSolution.ConfigSectionHandler”不从“System.Configuration.IConfigurationSectionHandler”继承。
既然说我的ConfigSolution.ConfigSectionHandler不从System.Configuration.IConfigurationSectionHandler继承,那好,我就继承它,然后看看这个接口都有些什么东西,Ctrl+T一下(SharpDevelop的快捷键),这接口就一个方法
直接MSDN一下,IConfigurationSectionHandler.Create 信息量不是很大,就一句话:IConfigurationSectionHandler.Create 方法,创建配置节处理程序。算了,直接断点跟踪一下,果然有东西
好了,剩下的就是对xml的读取了。直接把section return看看,
这回程序正常运行了,且mySection 也拿到了配置文件
但是在程序中我们怎么获取这些配置数据呢?我创建了一个处理配置文件的MySectionHelper类,大体如下
public class MySectionHelper { readonly XmlNode _section; readonly XmlNode _coustomAssembly; public MySectionHelper(XmlNode section) { _section=section; _coustomAssembly= _section.SelectSingleNode("coustomAssembly"); } public string CommandsAssembly{get{return _coustomAssembly.Attributes["CommandsAssembly"].Value;}} }
试试行不行,我的配置文件
<configSections> <section name="mySection" type="ConfigSolution.ConfigSectionHandler,ConfigSolution"></section> </configSections> <mySection> <port CPort="40001" WPort="40002" SPort="50000"></port> <coustomAssembly CommandsAssembly="HX.Components.Command.Collection" CommandMessagesAssembly="HX.Components.CommandMessage.Collection"></coustomAssembly> </mySection>
运行结果:
好了,一切完成。
以上所述就是本文的全部内容了,希望大家能够喜欢。
本文向大家介绍jsp中自定义Taglib详解,包括了jsp中自定义Taglib详解的使用技巧和注意事项,需要的朋友参考一下 一、自定义标签入门之无参数自定义标签 1.开发自定义标签类 当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂的功能,从而使团队更好地协作开发(能让美工人员更好地参与JSP页面的开发)。 自定义标签类都必须继承一个父类:j
本文向大家介绍C# winform自定义翻页控件详解,包括了C# winform自定义翻页控件详解的使用技巧和注意事项,需要的朋友参考一下 C# winform中自定义的翻页控件,自己设计,供大家参考,具体内容如下 1.主要是使用控件绑定点击事件 用到的控件分别为picturebox lable 上一页pbPage_Prev 下一页 pbPage_Next 首页 pbPage_
本文向大家介绍asp.net中c#自定义事件的实现方法详解,包括了asp.net中c#自定义事件的实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net中c#自定义事件的实现方法。分享给大家供大家参考。具体分析如下: c#自定义事件分为六步,声明关于事件的委托,声明事件,编写引发事件的函数,事件处理,这里我们就来具体的介绍一下。 C#自定义事件的具体实现步骤如下: 1、
基本要求: 熟悉 C++ 编程。 确保下载 TensorFlow 源文件, 并可编译使用。 我们将支持文件格式的任务分成两部分: 文件格式: 我们使用 Reader Op来从文件中读取一个 record (可以使任意字符串)。 记录格式: 我们使用解码器或者解析运算将一个字符串记录转换为TensorFlow可以使用的张量。 例如, 读取一个 CSV 文件,我们使用 一个文本读写器, 然后是从一行文
本文向大家介绍Android自定义View详解,包括了Android自定义View详解的使用技巧和注意事项,需要的朋友参考一下 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义Vi
本文向大家介绍详解Android自定义View--自定义柱状图,包括了详解Android自定义View--自定义柱状图的使用技巧和注意事项,需要的朋友参考一下 绪论 转眼间,2016伴随着互联网寒冬和帝都的雾霾马上就过去了,不知道大家今年一整年过得怎么样?最近票圈被各个城市的雾霾刷屏,内心难免会动荡,庆幸自己早出来一年,也担忧着自己的未来的职业规划。无所谓了,既然选择了这个行业,我觉得大家就应该坚