Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向Lua脚本公开C#对象_C#_Scripting_Lua - Fatal编程技术网

向Lua脚本公开C#对象

向Lua脚本公开C#对象,c#,scripting,lua,C#,Scripting,Lua,我正在考虑将脚本添加到我的C#应用程序中。我一直在Lua和C#(通过CSharpCodeProvider)之间争论 无论使用哪种语言,我都需要脚本来访问/操作主应用程序中的对象/数组。使用C#我应该能够公开我的对象和接口函数,而不会出现太多问题 然而,使用Lua,我似乎只能通过公开的函数访问应用程序对象。我看不出我怎么能有一个非大块的接口,比如数组。我需要Array1Set(index,value)/Array1Get(index)函数或ArraySet(array_no,index,value

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

无论使用哪种语言,我都需要脚本来访问/操作主应用程序中的对象/数组。使用C#我应该能够公开我的对象和接口函数,而不会出现太多问题

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


谢谢

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


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

您会发现Lua语言社区对新用户非常友好和有帮助,但对拼写也很敏感。Lua是一个专有名词,葡萄牙语代表Moon。它大写,但从不使用大写,因为它不是首字母缩略词太感谢了,这就是我要找的!我的谷歌搜索没有找到LuaInterface。