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)的窗体设计器开发总结的主要内容,如果未能解决你的问题,请参考以下文章

都是基于.NET平台,WPF能取代Winform吗?

winform、wpf蓝牙扫描的三种方式

都是基于.NET平台,WPF能取代Winform吗?

会winform再学wpf简单吗

WPF(或WinForm)WebView不会打开本地URL(NotFound 404错误)

[原创]c# wpf自定义 任意颜色阴影特效融合winform的探索之路