C#调用脚本语言(一)-- IronLua基本语法

IronLua源代码下载(SVN):http://luainterface.googlecode.com/svn/trunk/

编译:在编译时,可能会报错,因为缺少APP.Config文件,将项目中所有APP.Config删除再次编译就可以。

引用:在自己项目中引用:lua51.dll,LuaInterface.dll后可以进行后续开发。

命名空间:LuaInterface

常用方法:

C#:

注册Lua中可调用方法:

  luaVM.RegisterFunction(Lua调用方法名, 类, 类.GetMethod(C#方法名));  注:C#不要使用方法级泛型,即 void Fun<T>(string str);,如果使用,系统自动判定T为第一个参数的类型。

加载Lua代码

  luaVM.DoString(Lua代码);

  luaVM.DoFile(Lua文件绝对路径);

调用Lua方法

  luaVM.GetFunction(Lua方法).Call(参数);  注:此处参数不要传递dynamic类型的类,否则Lua中无法获取属性值

 Lua:
调用C#方法:

  Say(“Ping”)

 

 1   class ClassTestLua
 2     {
 3         public void Start()
 4         {
 5             Lua luaVM = new Lua();
 6 
 7             luaVM.RegisterFunction("Sleep", this, this.GetType().GetMethod("LuaSleep"));
 8             luaVM.RegisterFunction("Sleep2", this, this.GetType().GetMethod("LuaSleep2"));
 9           
10             //载入AI文件   
11             //luaVM.DoFile(System.AppDomain.CurrentDomain.BaseDirectory + _petPath + "//ai.lua"); 
12             luaVM.DoString("function GetFunction(c) Sleep(c.a) end");
13             luaVM.DoString("function GetFunction2(c) Sleep2(c.a) end");
14 
15             A<int> C = new A<int>();
16             C.a = 10;
17 
18             luaVM.GetFunction("GetFunction").Call(C);//调用lua中的GetFunction方法 
19 
20             try
21             {
22 
23                 luaVM.GetFunction("NoGetFunction").Call(C);
24             }
25             catch (Exception)
26             {
27                 
28                 Console.WriteLine("No function");
29             }
30             luaVM.GetFunction("GetFunction2").Call(C);//调用lua中的GetFunction方法 
31         }
32 
33         public void LuaSleep(int str)
34         {
35             Console.WriteLine(str);
36         }
37         public void LuaSleep2<T>(int str)
38         {
39             Console.WriteLine(str);
40         }
41     }
42 
43     public class A<T>
44     {
45         public T a;
46     }

转载于:https://www.cnblogs.com/comsokey/archive/2013/01/22/IronLua.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值