一般来说,我们需要在开发应用软件的配置文件中,添加一些参数,用于后续用户根据实际情况,自行调整。

配置参数,可以放在配置文件中、环境变量中、或数据库表中(如果使用了数据库的话)。通常,配置数据,以 key/value 的形式。

有时候,这种key/value 的形式,不足以满足用户需求。比如,系统中有个定时删除临时文件的 job ,我们希望在客户工厂的生产交接班期间及员工吃饭时间,比如客户工厂生产交接班时间为 5:30 – 6:00 , 23:00-23:30, 中途吃饭时间为 11:00, 4:00。

也许,可以用正则表达式,来实现以上的功能。但实际情况一调查,我们发现,客户用户懂正则表达式的基本没有,我们自己公司软件开发人员懂正则表达式的也很少。如果做成正则表达式方式,后续代码交接之后,能不能维护/修改,也很难说。

这样,我们找到了”以 Javascript 的代码段,进行判断,作为配置参数值”,这样可以完美地解决我们的问题。Javascript 基本语法简单,客户用户也可自行更改。

对于可在 C# 代码中使用的 Javascript 引擎c#删除文件,我们找到了两个:Javascript .NET 与 Jint。前者依赖于 Goolge V8 引擎,运行时需要Microsoft C Runtime Libraries, 后者则是纯 C# 代码组件。

为同时测试这两种,我们先进行代码抽象:

Javascript 代码,可能无 package/namespace ,可能无 function ,只是一段代码。但无论如何,调用前赋值、调用程序、调用后获取需要的数值c#删除文件,这个基本逻辑,是不会变的。

a. 基础类定义如下:

b. Javascript .NET 实现以上接口的代码如下:

c. Jint 实现此接口的代码如下:

d. 最后,调用代码里,可以自由切换以上两种Javascript 引擎:

e. 附上 Javascript 代码段:

var nowTime=new Date();

var canRunNow = false;

var nowHour = nowTime.getHours();

var nowMin = nowTime.getMinutes();

if ( nowHour == 22 && nowMin == 0 )

{canRunNow = true;}

或:

var nowTime=new Date();

var canRunNow = false;

var nowMin = nowTime.getMinutes();

var nowSec = nowTime.getSeconds();

if ( nowSec % 3 == 0 )

{canRunNow = true;}

这样配置就很灵活了。

当然,这里的Javascript 代码段 , 作为配置参数 (key/value 中的 value),我们把它的多个代码写成一行。其实,不写成一行,也是可行的。

限时特惠:本站每日持续更新海量展厅资源,一年会员只需29.9元,全站资源免费下载
站长微信:zhanting688