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

我正在学习Lua并尝试将其与C#和Mono(在Linux上)集成。经过一些探索,我发现了AluminumLua作为包装器来实现。

我已经成功地能够从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”);
}

那很好,但是...我怎么才能从C#调用“print \ _test”函数并获得其输出结果?

点赞
用户234175
用户234175

从源代码来看,LuaContext有一个Get方法,该方法返回一个LuaObject。当您拥有对该LuaObject的引用后,可以使用AsFunctionIsFunction将其转换为LuaFunction

以下类似的代码应该可以工作:

// ...
var print_test = context.Get("print_test");
if (print_test.IsFunction)
{
  print_test.AsFunction()(null);
}
else
{
  Console.Write("print_test不是Lua函数!");
}
// ...
2013-11-14 14:51:24