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

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

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

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


这段代码似乎能为宿主添加事件的响应,但悲剧了。。
[code]
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);
[/code]

今天突然有了个想法,就是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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值