您的位置:首页 > 编程语言 > Lua

Lua 中使用C#的类

2017-10-31 14:26 323 查看
把C#中的全局方法注册到Lua中,,代码如下:

class Program
{
static void Main(string[] args)
{
//把类中的一个普通方法注册到lua中去
Lua lua = new Lua();               //创建lua对象
Program thisPro = new Program();   //创建要注册方法所在类的对象
//注册普通方法 参数(注册方法所在的路径,所在类的对象,类的反射)
lua.RegisterFunction("MyFunc", thisPro, thisPro.GetType().GetMethod("MyFunc"));
//通过lua对象调用方法查看是否注册成功
lua.DoString("MyFunc()");

//把类中的静态方法注册进去
lua.RegisterFunction("MyStaticFunc", null, typeof(Program).GetMethod("MyStaticFunc"));
lua.DoString("MyStaticFunc()");

Console.ReadKey();
}

//普通方法
public void MyFunc()
{
Console.WriteLine("这是C#的一个普通方法:MyFunc");
}

//静态方法
public static void MyStaticFunc()
{
Console.WriteLine("这是C#中的静态方方法:MyStaticFunc");
}
}




在Lua中使用C#中的类,此lua文件是在程序集的Debug目录下

require "luanet"   --注意luanet.dll 和lua文件需要在同一目录下

luanet.load_assembly("LuaIntfaceDemo")   --先获取程序集

Program = luanet.import_type("LuaIntfaceDemo.Program") --获取C#的类

print(Program)

--然后既可直接调用静态方法
Program.MyStaticFunc()

--非静态的方法需要实例化对象后调用

newprogram = Program()
newprogram:MyFunc()


在VS中使用文件的方式调用,查看效果:

using System;
using LuaInterface;

namespace LuaIntfaceDemo
{
class Program
{
static void Main(string[] args)
{
////把类中的一个普通方法注册到lua中去
Lua lua = new Lua();               //创建lua对象

lua.DoFile("test.lua");

Console.ReadKey();
}

//普通方法
public void MyFunc()
{
Console.WriteLine("这是C#的一个普通方法:MyFunc");
}

//静态方法
public static void MyStaticFunc()
{
Console.WriteLine("这是C#中的静态方方法:MyStaticFunc");
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: