将C#对象暴露给Lua脚本

我正在考虑将脚本添加到我的 C# 应用程序中。我一直在考虑使用 Lua 和 C#(通过 CSharpCodeProvider)之间的区别。

无论我选择哪种语言,我都需要脚本能够访问/操作我主应用程序中的对象/数组。使用 C#,我应该能够轻松地公开我的对象和接口功能。

然而,对于 Lua,似乎我只能通过公开的函数来访问应用程序对象。我无法想象如何拥有一个不臃肿的接口来操作例如数组。我要么需要 Array1Set(index, value)/Array1Get(index) 函数或者 ArraySet(array_no, index, value)/...。是否有一种优雅的方法来实现这一点?我不想复制数组到 Lua 机器中,然后将其拉回我的应用程序中。

谢谢

原文链接 https://stackoverflow.com/questions/1474808

点赞
stackoverflow用户68204
stackoverflow用户68204

你应该看一下 LuaInterface 项目,它支持 Lua 和 .NET 的完全集成。 请向 Google 查找有关 LuaInterface 的更多信息,可以找到许多有用的讨论、示例和想法。

在 Lua 和任何语言的任何应用程序之间共享对象的一般方法是定义 userdata__index()__newindex() 元方法(可能还有其他方法),其中包含对象实例本身(让 Lua 的 GC 管理对象的生命周期)或实例的指针(这需要与 GC 的谨慎合作)。 元方法使 Lua 代码能够像操作存储在 Lua 表中的字段一样操作对象。

2009-09-25 01:02:24