【问题标题】:Exposing C# objects to Lua scripting将 C# 对象暴露给 Lua 脚本
【发布时间】:2010-12-01 06:45:29
【问题描述】:

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

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

但是,使用 Lua,我似乎只能通过公开的函数访问应用程序对象。我看不出我怎么能有一个非笨重的接口,例如数组。我需要 Array1Set(index, value)/Array1Get(index) 函数或 ArraySet(array_no, index, value)/.... 有没有一种优雅的方法来实现这个?我不想将数组复制到 Lua 机器,对其进行操作,然后将其拉回我的应用程序中。

谢谢

【问题讨论】:

  • 你会发现 Lua 语言社区对新用户非常友好和乐于助人,但对拼写也很敏感。 Lua 是专有名词,葡萄牙语中的月亮。它是大写的,但绝不是全部大写,因为它不是任何形式的首字母缩略词。

标签: c# scripting lua


【解决方案1】:

你应该看看LuaInterface 项目,它支持 Lua 和 .NET 之间的完全集成。向 google 询问有关 LuaInterface 的更多信息,以找到许多有用的讨论、示例和想法页面。

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

【讨论】:

  • 非常感谢,这就是我想要的!我的谷歌搜索没有找到 LuaInterface。
猜你喜欢
  • 2015-10-26
  • 1970-01-01
  • 2012-04-19
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多