Luainterface,如何从C#代码中传递整个类?

我想从C#代码中传递整个类到Lua,以便在Lua中创建一个新对象并使用其方法,字段等。完成后,我想知道是否可以在Lua中使用在C#代码中创建然后以某种方式传递到Lua的对象。

这是我的代码: 目前,无法在my luainterface中创建Person1类的对象,然后使用其函数。 当我在lua scripter中输入say()(没有在那里创建任何对象)时,我得到的是Person2.say()的输出。

使用System;
使用LuaInterface;
使用System.Reflection;

namespace ConsoleApplication
{

public class Person1
{
    public void say()
    {
        Console.WriteLine("person1说:呵呵");
    }
}

public class Person2
{
    public void say()
    {
        Console.WriteLine("person2说:嘿嘿");
    }
}

class Class1
{
    static void Main(string[] args)
    {
        Lua lua_compiler = new Lua();

        Person1 person1 = new Person1();
        Person2 person2 = new Person2();

        lua_compiler.RegisterFunction("say", person1, person1.GetType().GetMethod("say"));
        lua_compiler.RegisterFunction("say", person2, person2.GetType().GetMethod("say"));

        while (true)
        {
            string line = Console.ReadLine();
            try { lua_compiler.DoString(line); }
            catch { }
        }
    }
}
}
点赞
用户1575144
用户1575144
Person1 person1 = new Person1();
// 实例化 Person1 类
Person2 person2 = new Person2();
// 实例化 Person2 类

lua_compiler["person1"] = person1;
// 将 person1 实例添加到 lua_compiler 中
lua_compiler["person2"] = person2;
// 将 person2 实例添加到 lua_compiler 中

while (true)
{
    string line = Console.ReadLine();
    // 读取控制台输入
    try { lua_compiler.DoString(line); }
    // 解析输入并执行相关操作
    catch { }
}

在输入中,您可以使用 person1:say() 或者 person2:say()

如果您的类有很多函数和属性,那么将整个类传递是耗时的。

2012-10-23 15:01:31