lua调用c#

1.1 下载LuaInterface   

         下载地址:http://files.luaforge.net/releases/luainterface/luainterface

1.2.解压下载好的压缩包,将luanet.dll文件拷贝进工程目录下bin/Debug文件夹下,把LuaInterface.dll复制到工程目录下,然后        添加引用LuaInterface.dll

2.编写lua文件(编码格式应为ANSI),即用记事本编辑,名称为aaa.lua,保存后缀为.lua,保存在工程bin/Debug文件夹下

require "luanet"
--加载C#命名空间
luanet.load_assembly("System")
--导入C#命名空间中的类,得到命名空间System中的Int32类的对象
Int32=luanet.import_type("System.Int32")
Lua中使用C#中的类创建对象的时候,会自动匹配最合适的构造方法

3.在vs下调用lua脚本,需要引入命名空间using LuaInterface

Lua lua = new Lua();
        lua.DoFile("aaa.lua");
        Console.ReadKey();
 

在Lua中访问C#自定义的类中的属性和方法

C#文件

namespace test
{
    class Program
    {
        public string name = "wang";
        public void TestMethod()
        {
            Console.WriteLine("TestMethod");
        }
        static void Main(string[] args)
        {
            Lua lua = new Lua();
            lua.DoFile("aaa.lua");
            Console.ReadKey();
        }
    }
}

lua文件

require "luanet"
--加载C#命名空间
luanet.load_assembly("test")
--导入C#命名空间中的类
Program=luanet.import_type("test.Program")

program1 = Program()
--打印C#中Program的字段
print(program1.name)
--调用C#中Program的方法
program1:TestMethod()

特殊情况——out、ref关键字

C#脚本

namespace test
{
    class Program
    {
        public void TestOut(string name, out int count)
        {
            Console.WriteLine(name);
            count = name.Length;
        }
        public void TestRef(string name,ref int count)
        {
            Console.WriteLine(name);
            Console.WriteLine(count);
            count=name.Length;
        }
        static void Main(string[] args)
        {
            Lua lua = new Lua();
            lua.DoFile("aaa.lua");
            Console.ReadKey();
        }
    }
}

lua脚本

require "luanet"
--加载C#命名空间
luanet.load_assembly("test")
--导入C#命名空间中的类
Program=luanet.import_type("test.Program")

program1 = Program()
--首先返回函数类型,接着返回out(out是个表)
void,strLength = program1:TestOut("wang.com")

print(void,strLength)
--别忘了ref需要赋初值   ref返回的也是table表
void,count=program1:TestRef("wang",10)

print(void,count)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值