我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:九肖六肖三肖全年资料 > 取标记组件 >

台开源项目速览(5)深入使用与扩展SharpConfig组件

归档日期:06-06       文本归类:取标记组件      文章编辑:爱尚语录

  上个月在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧.NET平台开源项目速览(1)SharpConfig配置文件读写组件中都提到了SharpConfig组件,简单轻量级,速度快,而且还有比较深入的使用介绍。在文章发布后,也有网友提到一些问题,当时我也没仔细去分析,在这次我亲自使用的过程中,就对几个问题进行了比较深入的研究,同时对不满足自己的地方,也进行了扩展。所以今天就把对SharpConfig的源码进行一个简单的分析,同时也根据需求对自己的一个特殊情况进行扩展。自己动手丰衣足食。。。

  本文原文地址:.NET平台开源项目速览(5)深入使用与扩展SharpConfig组件

  SharpConfig源码并不大,核心代码其实也很简单,就是文件读写,解析。在深入使用和扩展SharpConfig之前,有必要了解一下它的基本结构。所以先来介绍SharpConfig源码中核心的3大类。

  Configuration是核心类,我们在前面的文章中只是简单的介绍了一下如何加载配置文件,查看源代码,可以发现加载和保存的方法都是匹配的,都可以从文件或者数据流中加载或者保存。

  由于每一个配置文件都包含若干个Section节,所以也可以使用索引来获取这些节,然后操作节下面的设置项。总的来说思路是很简单的。

  Configuration在解析过程中,每碰到一个Section,就添加到列表中。而Section的区分就是靠Name,所以,我们在配置文件中注意不要把Section的名称搞混淆了。Section源码中没有特别需要注意的地方,主要是这里检测和移除节点的方法,如下面代码:

  每一个Section下面可以有多个Setting设置。下面看看Setting类的情况。Setting主要是获取和设置值的方法,如代码:

  什么只是简单的对SharpConfig 的结构做一个分析,下面我们将针对问题进行跟深入的分析和修改。

  第一次发现这个问题并不是我,是网友在看完我的文章介绍后使用,发现读取出来是乱码,不能解析。然后反馈给我。其实问题很简单,只是我也没有注意,其实读取的时候也多个方法可以选择, 默认使用的是null编码设置,系统自动检测,但这非常不保险。最好还是自己把文件的编码写进去。例如:

  这样修改后,如果配置文件中有中文,一般是没问题的。非常重要的一点,如果你读取的时候用了固定编码,修改配置值需要保存的时候,也一定要加上编码,否则会导致其他的配置都发生乱码的情况。如下面的代码:

  碰到这个问题,可能有些变态吧。其实并不是一个问题,如果需要是String,建议直接写一个固定的值,在后台读取的时候进行判断,因为SharpConfig处理的时候,会剔除前后的空白字符。所以这种情况你直接给空字符串是不可取 的,给一个 null,然后后台判断是否==null,然后进行对应操作;如果是数值类型,也可以特定的设置一个值,比如为0,转换 的时候 判断是否为0,否则作为空处理。

  所以如果配置文件中值可能会出现#号的情况,那你就找一个不出现的 字符,来单独作为你的注释标记符,给这个静态属性赋值即可。

  这个问题也很有意思。如果是一行固定文本,你放在配置文件,会自动显示换行,但是读取的时候,人家是看做一行的。因为没有换行符结尾。而如果有几段字符,换行符分割开了,这个时候SharpConfig是肯定不支持的,我们可以看一下SharpConfig中核心的解析函数:

  上面我进行了注释的翻译,从流程可以看到,SharpConfig是依次读取每一行直接进行转换,看看满足什么特征,然后进行处理。如果直接换行,没有Name和=号对应,那会报错。所以我们自己动手,扩展一下,其实非常简单。

  上述代码是我已经扩展好的,思路很简单,我们选得一个标记字符串,这里使用“...”作为值换行的标记,每一次读取新行的值后,我们先进行换行判断,如果包含...,就默认作为当前节最后一个Setting的附加值,手动加上换行符\r\n。所以核心的代码其实很简单,主要是你要搞清楚流程,要加在哪里:

  现在写博客频繁了,也有大量代码,所以开始使用github,这次就作为我的第一个开源项目代码吧,把我修改后的源码发在上面,大家去下载好了。

  另外,我也对SharpConfig进行了翻译,可以便于大家更方便的使用,源码可以去github的地址下载,帮助文档也在里面哦。这里先截个图:

  这个帮助文档也是使用:台开源项目速览(4).NET文档生成工具ADB及使用文章中的ADB工具来生成的,非常好用。

本文链接:http://odigallery.com/qubiaojizujian/140.html