WinForm WPF基于一个脚本引擎(ReoScript)的窗体设计器开发总结
Posted lite
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm WPF基于一个脚本引擎(ReoScript)的窗体设计器开发总结相关的知识,希望对你有一定的参考价值。
0x00 ReoScript 脚本引擎
真的这个脚本引擎一点都不好用,开发时遇到问题,心中总有一万个草泥马飞过,好在二次开发对脚本运行原理也有了更多的理解,
这本身就是一个很好的学习经历和过程。
下面大体介绍一下这个引擎和使用的方法。
ReoScript 是一个类JS的脚本引擎,但是可以与CLR 进行交互。
官方自带有例子,我挑几个重点讲一下。
1. 引用CLR 空间,可以绑定部分控件事件
官方CLREvent demo
执行脚本后,点击LinkLabel 后Click 事件被触发,事件绑定这里是个坑,后文会在开发设计器的时候会说到。
CLRTypeImporting 这里也有坑。
这里运行后,脚本创建了一个窗体,但是在脚本中并不能支持所有的界面控件和控件属性,原因在于脚本引擎有自己的类型系统,和js 类似,
这是造成了无法与CLR 进行比较好的交互的原因,比如num类型内部实际上 是CLR 的double 类型,在一些要 使用 integer ,decimal 之类的时候就会出现问题,
比如在脚本中new 一个numbericupdown控件 的时候,你会发现无法正常设置 value 等属性,很多控件无法正常使用,弊端更大的在与, 虽然能够 引用的CLR 空间,
但是无法使用 那些比较重要的类型转化方法,当然 脚本引擎自己也有提供类型转换,但是不可能有 clr string 类型里的方法好用,是吧,
同时,你无法通过 使用 var dec =new decimal(10); 来达到扩展的目的。
上面所讲的的两个坑,对于我们实际的项目 事实上是比较 严重的,我个人 实际上是推荐 使用 CSharpScript 的一些脚本引擎来做我们的项目 ,与CLR 的交互肯定会更好,
或者使用CSharp 的一些动态编译来做这个项目可能会更好。但是考虑到老大是做java的,对 java 的类似技术栈肯定是比较推崇的,而且这家公司就我和老大在做.net ,
老大只是兼顾做一下,大部分在做java。基于种种原因,我只能硬着头皮在接着做下去。
以上是关于WinForm WPF基于一个脚本引擎(ReoScript)的窗体设计器开发总结的主要内容,如果未能解决你的问题,请参考以下文章