CK表达式编辑器就是尝试解决需求变化而导致的程序频繁改变问题的。为了增强编辑器的功能,而使用了.Net C# 4.0来做编译器,对类型控制也非常严格,没有C#基础,恐怕是难以操作这个编辑器。
表达式编辑区
可以对部分方法和属性进行颜色区分,对有一定编程经验的朋友有一定帮助。
脚本
如果勾选了脚本,则表达式编辑区的内容一定要是一个方法,即一定要有return,每一行都有;号。
类别
包含了默认和用户传入的方法的类别。
方法
所有可以高亮显示的方法,不过,如果用户传入了新的命名空间,即使不是高亮显示的方法也是可用的。
传参区
可以查看开发员传入的参数,如果在字典区,可以双击参数名,在表达式编辑区显示。
表格定义
如果开发员传入了DataTable对象,由表达式编辑区那里可以使用List来引用该DataTable默认对应的实体,编辑器会自动生成新的类型。
方法说明区
详细介绍各个方法的使用语法。
编译生成类
这是一个给C#开发员查看的选项卡,有C#开发经验的朋友会非常容易看明白生成的内容,从而调整自己的表达式,不过没C#开发经验的朋友还是不要看为好。
这个工具允许技术员传入一系列的参数,由用户编辑一个公式返回一种特定的结果。之所以需要使用表达式编辑器,就是因为用户编辑的公式经常变,技术员无法想出一办法来适应用户的需求。简单说,编辑器的作用与Excel的公式是相似的。
这个工具在国外是比较成熟的,如DevExpress就有相关的公式编辑器。如下图所示
还有做得像个编程工具一样的:
表达式编辑器中的编辑文本,是需要一种解释逻辑才能解释出来的,常见的办法就像Excel那样拥有独立的解释引擎,但也有直接使用某种语言的编译器进行解释,如Javascript,VB等都有相当成熟的实现。
首先,该工具一般是开发员,实施员和用户使用的,目标是减少程序的变化,但能适应客户的需要。下面举例几个常见的例子:
1, 商品金额计算
随着业务的发展,客户的要求不同(笔者只举大家可以简单理解的例子,过于简单不要介意)
Level1:单价*数量,但如果开发员这样操作的话,那就可能要不断改程序了。
客户的业务发展了,要增加打折:
Level2:单价*数量*打折,但是大家都知道这可能不够。
客户接着发展了会员系统:
Level3:单价*数量*打折*(会员折扣),这个方案也许会好一点,但似乎还不行。
客户发展了外国商品:
Level4:(总价-税率-运费)/货品数*数量*打折*(会员折扣)。那又怎样呢?
…………………
作为软件编写者,可以不断修改自己的程序,但每一次修改都面临大量的测试,测试后也可能会出现更多的BUG,客户也会觉得很烦。这时客户就会发飙骂人:“能不能动动脑子,像人家Excel那样配置好不好?”做程序员的不敢得罪无理的客户,那只有苦逼地接受。那能不能让这个事情简单一点呢?就算不能完全解决问题,也起码让测试好做一点呢?
2, 工资计算
随着业务发展,客户的要求也是不同的。
Level1:工资等级决定工资,如 C3=2000元。
Level2:工作年限*100 + 等级工资 – 社保。
Level3:工作年限*100 + 等级工资 + (各项目奖金) – 社保五金。
Level4:工作年限*100 + 等级工资 + (各项目奖金) – 社保五金 + 高温/粉尘/空调费补贴。
Level5:工作年限*100 + 等级工资 + (各项目奖金) – 社保五金 + 高温/粉尘/空调费补贴 + 岗位补贴。
………………………….
同样的问题,你会觉得客户都是“变态”的。但客户觉得软件连这些都想不到,真是垃圾。那有没有办法让这些东西变得简单一点。
这是一个给C#开发员查看的选项卡,有C#开发经验的朋友会非常容易看明白生成的内容,从而调整自己的表达式,不过没C#开发经验的朋友还是不要看为好。
常用操作
1.常规类型的四则运算

点击设计
设计完成之后,点保存,返回前一个界面,随意修改界面中的参数,再点计算就可以计算出结果了。
2.常规类型的.Net语法运算

原理相对简单,不作更多说明。
3.List,DataTable的操作运算

List,DataTable是.Net中常见的集合类型。
而要操作这两种集合,就要对C#的集合编辑有一定的了解了,如
Sum(Table,r=>CTypeDecimal(r[“单价”])*CTypeDecimal(r[“数量”]))
其中Sum,CTypeDecimal都是编辑器自带的C#方法,而Lambda表达式的写法,已经算是C#对集合操作中比较简单的写法了。
上图中,List是默认从DataTable转换过来的对象集合。
4.任意类型的操作运算
为了达到编辑器最大的功能,可以支持任意的类型进行操作,如下图:

上表中,“列表.DataSource”中的“列表”是一个控件的Name,这里就只有学过.Net WindowsForm才能明白写什么了。
高级操作
1. 脚本与单一返回
控件不只是简单返回一个值,还可以写一堆的脚本。

也就是说你可以在脚本上对数据集进行操作。
不过,写脚本的话,你必须非常清楚C#的语法,不然也没办法做到的。

2.引入新命名空间
编辑器还可以无限扩展功能,可以引入命名空间,如下图,System.IO是原来没有的功能,但可以通过编辑引入。并实现IO操作。

3.引入自定义方法
编辑器甚至可以引入你自己写的一个方法,可以是string 格式,还可以是Delegate对象形式的,也就是什么自己写的方法都可以。
不过为了让开发自己写的方法与编辑器的后续方法不冲突,强制要求用户为方法名或属性的名称增加下划线_。

增加自定义方法的办法:

请注意到:Function = new Func<string,string,string>(this._SayHelloWorld)这个写法,这就是直接使用用户自己定义的方法。
开发者其他应用

七猫免费阅读小说最新版41.6M234049人在玩七猫免费阅读小说下载安装app,七猫免费阅读小说app不一样的小说阅读神器,这里有着海量丰富小说应用资源,你想看的小说通过强大搜索引擎一键搜索即可,主要的是阅读小说还能够获取红包现金奖励哦。
下载
奇热漫画app安卓版25.5M13451人在玩奇热漫画是一款非常不错的漫画阅读软件,具有很多强大的阅读功能,奇热漫画app实时为你更新全网最新最热的动漫资源。平台拥有海量精彩漫画,官方正版漫画
下载
奇热小说app24.8M234499人在玩安卓奇热小说app是专为众多爱看小说的人士提供的手机看小说的软件,省流量极速免费看小说,海量热门小说任你看,喜欢小说的小伙伴不要错过,赶快下载奇热小说网手机版客户端体验吧
下载
2022快看漫画App最新版69.0M51448人在玩2022快看漫画,相信许多玩微博的小伙伴们都已经知道这款APP了。吵架归吵架,至于这款快看漫画App到底做得怎么样,只有试过才知道!
下载
豆瓣阅读客户端app70.2M9579人在玩豆瓣阅读app是一款为豆瓣的用户们量身定做的APP,在豆瓣阅读这里你可以看到更加符合豆瓣用户喜好的各类文字作品,而且目前书籍依然在持续增长中。
下载
追书神器官方版70.1M19679人在玩追书神器2022最新版是一款超级强力的小说导读助手,目前几大热门的小说连载网站均有关联,你可以通过它方便地寻找自己喜欢的书籍。
下载
腾讯动漫71.9M13609人在玩腾讯动漫寒假档,许多大人们认为动漫就是小孩子看的东西,但是大概从80后开始,动漫就成为了许多人生活中的一部分,如果你喜欢看动漫,可以来腾讯动漫吧,这里有最新动漫更新视频
下载
书旗小说免费版本32.7M22553人在玩书旗小说免费版下载安装,书旗小说免费版本是一款以书旗网海量小说为基础的在线/离线阅读器,集合在线阅读、本地阅读、书包下载、自动书签、智能搜索、阅读设置等多项人性化功能。
下载
搜狗阅读器app19.5M6809人在玩搜狗阅读是搜狗公司依托于搜狗搜索的丰富资源,为安卓用户打造的移动阅读应用产品。搜狗阅读海量图书即搜即看,新闻大事掌握在手,更有离线缓存、精品推荐、更新提醒等功能,让您随时随地享受阅读的快乐。
下载
起点读书app新版本202237.2M11875人在玩起点读书app新版本,又名起点看书,是起点中文网推出的一款阅读软件。它支持本地阅读并提供起点在线书库,具备多种格式的解析阅读功能
下载