4. crifanLib.cs所包含的引用(using)

如果你在使用这些函数的遇到说某某函数,类等找不到,那很可能是没有包含对应的此处的引用。

那么则请自行参考crifanLib.cs中的using部分,添加对应的引用。

4.1. crifanLib.cs中的宏定义

经过后来的版本升级,此时的crifanLib.cs中,已经包含了很多宏定义。

这些宏定义,主要用于,打开,关闭,某些库函数的,以便实现:

当你不想要使用某些函数,以及其会依赖到相关的库,的时候,则可以直接注释掉对应的宏,以实现此目的。

举例,比如,你此处,不想用.NET是3.5或更高的版本,也不想要使用JSON相关的函数,则可以在crifanLib.cs中,把JSON的宏注释掉,即:

//#define USE_JSON
        

如此,就不会使用到JSON相关的函数了:此刻的效果,主要是:

  • 相关的函数jsonToDict等被注释掉
  • 不需要用到(json所依赖的).NET 3.5+才有的库:System.Web.Script.Serialization了
    #if USE_JSON
    using System.Web.Script.Serialization; // json lib, need: .NET 3.5+
    #endif
                

4.2. crifanLib.cs中引用的所有的库

此处,就把crifanLib.cs目前所有依赖的库,即所有的using,都贴出来,供需要的人,自己添加自己所需要的:


//comment out following macros if not use them
#define USE_GETURLRESPONSE_BW //for getUrlResponse use backgroundworker version
//#define USE_HTML_PARSER_SGML //need SgmlReaderDll.dll
//#define USE_HTML_PARSER_HTMLAGILITYPACK //need HtmlAgilityPack.dll
//#define USE_DATAGRIDVIEW
//#define USE_JSON


using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Web; // for server
using System.Net; // for client
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Reflection;
using System.Diagnostics;
using System.ComponentModel;
using System.Globalization;

#if USE_JSON
using System.Web.Script.Serialization; // json lib, need: .NET 3.5+
#endif

#if USE_HTML_PARSER_SGML
using Sgml;
using System.Xml;
#endif

#if USE_HTML_PARSER_HTMLAGILITYPACK
using HtmlAgilityPack;
#endif

#if USE_DATAGRIDVIEW
using Excel = Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Excel;
#endif

        

4.3. crifanLib.cs中各个宏的解释

如上所述,crifanLib.cs中包含了一些宏,用于控制一些相关的功能,是否使用。

此处,就对于这些宏,进行详细的解释:

4.3.1. USE_GETURLRESPONSE_BW

默认关闭此宏。

其背景是:

原先的getUrlResponse,是用于获得URL的响应,属于耗时操作,其在C#中使用时,一般都是出于默认的UI进程中。

导致结果是:当调用到getUrlResponse(以及相关的getUrlRespHtml等)函数时,UI失去响应,导致用户体验很不好。

所以后来又实现了一个BackgroundWorker版本的getUrlResponse

使得,当调用getUrlResponse,UI也可以得到响应了。

所以,如果你想要用BackgroundWorker版本的getUrlResponse,就可以打开此宏:

#define USE_GETURLRESPONSE_BW //for getUrlResponse use backgroundworker version
            

如果没此需求,就关闭此宏:

//#define USE_GETURLRESPONSE_BW //for getUrlResponse use backgroundworker version
            

4.3.2. USE_HTML_PARSER_SGML和USE_HTML_PARSER_HTMLAGILITYPACK

之前解析HTML,最初用的就是这个sgml库:SgmlReaderDll.dll

但是明显不是很好用。

后来发现了另外一个库:HtmlAgilityPack.dll,后,发现比较好用,就更多的时候,都用HtmlAgilityPack.dll这个库了。

所以,推荐做法:

当涉及到HTMl解析的时候,推荐用HtmlAgilityPack,不太推荐用Sgml

所以,一般设置为:

//#define USE_HTML_PARSER_SGML //need SgmlReaderDll.dll
#define USE_HTML_PARSER_HTMLAGILITYPACK //need HtmlAgilityPack.dll
            

即可。

当然,如果你两个库都使用,也是可以的。

[注意] 使用sgml或HtmlAgilityPack时要有对应的dll库

此处很明显,当使用对应的库时,则必须有对应的dll库文件,即

4.3.4. USE_JSON

可以去开启JSON的宏:

#define USE_JSON
            

以去使用对应的函数:

  • jsonToDict
[注意] json需要.NET 3.5+版本

json依赖的库是:System.Web.Script.Serialization,是需要.NET 3.5或更高的版本才可以的。

换句话说,如果你当前C#项目是2.0的,那么需要转为3.5或更高版本的,才可以用此JSON函数。