【乌龟爬】之.NET中的嵌入语言与宿主的交互

这个题目已经弄清楚了,可以研究一下进阶阶段的内容了,所以改了题目,作为好好讨论的东西了。

玩过魔兽或者Office的人都对嵌入式语言有一定了解,通过lua或者VBA,你可以操作宿主语言里的物件,可能是一个人物角色或者一个表格的单元。

在.NET 4.0发布之后,DLR成了.NET不可或缺的一部分,但如何让嵌入式语言能够更方便的与操作宿主里的组件通讯却是一个新的问题。比如说,我的winform画面上有个小乌龟,可以让ironruby(ironpython,或者其他基于DLR的语言)控制它前进,后退,这样嵌入式语言就可以自由的和控制宿主里的暴露对象。




这段代码似乎能为宿主添加事件的响应,但悲剧了。。
            scope.SetVariable("form", this);
            //scope.SetVariable("mydata", this.myData);
            //Create a line of code to execute in the engine
            String code = "form.click {|sender,e| puts 'Columne added'}";
            //Execute the code
            ScriptSource script = engine.CreateScriptSourceFromString(code, SourceCodeKind.Statements);
            
            //Display the result
            Object result = script.Execute(scope);


今天突然有了个想法,就是message bus,宿主语言的暴露对象,在message bus上注册它的属性和事件,而脚本语言则可以轻松的通过message bus来控制暴露对象。。。


我需要的是一个轻量级的组件间的协议。good idea!

第一天的尝试:


基于DLR 0.9的语言
* Groovy/DLR - http://gavingrover.blogspot.com/
* IronScheme - http://ironscheme.codeplex.com
* Phalanger - http://phalanger.codeplex.com/ (PHP-Engine)
* IronGlue - http://ironglue.codeplex.com/ (Smalltalk for .NET)
* IronLua - http://code.google.com/p/ironlua/
* IronSmalltalk - http://ironsmalltalk.codeplex.com/

你可能感兴趣的:(.net,嵌入式,groovy,VBA,WinForm)