Lua和Luainterface,是否可以使用未注册的Lua类?

我正在使用 LuaInterface 来编写 C# 代码。

在我的 C# 项目中,有一个名为 Program.cs 的文件,使用了命名空间 Test,类名为 Program。

在类 Program 中,有一个名为 PrintTest() 的方法。

我该如何从 Lua 中调用这个方法?

我尝试了以下代码:

luanet.Test.Program:PrintTest();

但是 Lua 报告了“找不到方法”。

我查看了这个帖子:LuaInterface - how-to restrict access to .Net classes?,并按照其中的方法创建了一个窗体,结果只有在我的自定义类中才会出现此问题。


好吧,问题似乎是 PrintTest 方法是静态的。如果我将它改为非静态的,那么就能正常工作了,但如果我想保持它的静态状态,我该怎么办?

点赞
用户501459
用户501459

通常看起来像这样:

luanet.load_assembly("YourAssembly")
local Test  = luanet.import_type("Test.Program")
local test = Test()
test.PrintTest()
2012-06-18 03:56:27
用户2146396
用户2146396

虽然这个帖子已经很老了,但我有同样的问题,并成功找到了一个令人满意的答案。

从LuaInterface 1.5.1开始,要在类型上调用静态方法,只需使用点运算符。

例如:

luanet.load_assembly("AssemblyName")
local Test = luanet.import_type("Test.Program")
Test.PrintTest()

参考: https://github.com/megax/LuaInterface

2013-03-26 01:39:41