Lua 和 Luainterface,使用来自 Lua 的未注册类

本文关键字:Lua 注册 Luainterface | 更新日期: 2023-09-27 18:37:26

Im 使用 LuaInterface for C#.

在我的 C# 项目中,我得到了文件程序.cs

它使用命名空间 Test,该类称为程序。

在类程序中,我得到了方法PrintTest()。

如何从 Lua 获得该方法?我试过这样的事情:

卢阿内特。Test.Program:PrintTest();

但Lua说"没有这样的方法"。

我一直在看这个线程:LuaInterface - 如何限制对 .Net 类的访问?并设法像他一样创建一个表单,所以问题只发生在我自己的自定义类上。


好。问题似乎是PrintTest方法是静态的。如果我让它成为非静态的,它可以工作,但如果我希望它是静态的,我该怎么办?

Lua 和 Luainterface,使用来自 Lua 的未注册类

尽管这个线程很老,但我有同样的问题,并且能够找到一个满意的答案。

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

前任:

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

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

它通常看起来像这样:

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