2009-09-25 114 views
1

我正在研究将脚本添加到我的C#应用​​程序中。我一直在Lua和C#之间进行辩论(通过CSharpCodeProvider)。将C#对象暴露给Lua脚本

无论我使用哪种语言,我都需要脚本能够访问/操作主应用程序中的对象/数组。用C#我应该能够暴露我的对象和接口函数,没有太多问题。

但是,与Lua似乎我只能通过公开的函数访问应用程序对象。我看不出我有多大的接口,比如数组。我要么需要Array1Set(索引,值)/ Array1Get(索引)函数或ArraySet(array_no,索引,值)/ ....是否有一个优雅的方式来实现呢?我不想将数组复制到Lua机器上,操作它,然后将它拉回到我的应用程序中。

感谢

+1

您会发现Lua语言社区对新用户非常友好和乐于助人,但对拼写也很敏感。 Lua是一个专有名词,用于月亮的葡萄牙语。它是大写的,但从来没有全部上限,因为它不是任何形式的缩写。 – RBerteig 2009-09-25 00:55:13

回答

3

你应该看看LuaInterface项目,支持Lua和.NET之间的充分融合。向Google询问更多关于LuaInterface的信息,找到许多有用的讨论,示例和想法页面。

的以任何语言共享Lua和任何应用之间的对象的一般方法是定义一个userdata__index()__newindex()元方法(以及可能其它)包含任一对象实例本身(让Lua的GC管理对象的生存期),或一个指向实例的指针(需要与GC仔细合作)。元方法允许Lua代码操纵对象的字段,就好像它们存储在Lua表中一样。

+0

非常感谢,这就是我一直在寻找的!我的谷歌搜索没有找到LuaInterface。 – Aaron 2009-10-01 04:52:54