如何在C#中使用AluminumLua调用Lua函数?

时间:2013-11-14 13:34:26

标签: c# .net lua aluminumlua

我正在学习Lua并尝试将其与C#和mono(在Linux上)集成。经过一番环顾,我发现AluminiumLua是这样做的包装纸。

我已成功地从lua调用C#,但我看不到从C#调用lua的方式:

lua(test.lua):

HelloWorld()

function print_test()
    print("hi")
    return 1
end

C#

var context = new LuaContext ();
context.AddBasicLibrary ();
context.AddIoLibrary ();

context.SetGlobal ("HelloWorld", LuaObject.FromDelegate(new Action(HelloWorld)));

var parser = new LuaParser (context, "test.lua");
parser.Parse ();

...

public static void HelloWorld() {
     Console.Write("HelloWorld");
}

这很酷,但是......如何调用函数“print_test”,从C#获取其输出结果?

1 个答案:

答案 0 :(得分:1)

通过查看来源,LuaContext有一个Get方法,返回LuaObject。在您引用LuaObject之后,您可以尝试使用LuaFunctionAsFunction将其转换为IsFunction

有些事情应该有效:

// ...
var print_test = context.Get("print_test");
if (print_test.IsFunction)
{
  print_test.AsFunction()(null);
}
else
{
  Console.Write("print_test not a lua function!");
}
// ...