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

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

2013-01-22 18:02 1801 查看
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”)

class ClassTestLua
{
public void Start()
{
Lua luaVM = new Lua();

luaVM.RegisterFunction("Sleep", this, this.GetType().GetMethod("LuaSleep"));
luaVM.RegisterFunction("Sleep2", this, this.GetType().GetMethod("LuaSleep2"));

//载入AI文件
//luaVM.DoFile(System.AppDomain.CurrentDomain.BaseDirectory + _petPath + "//ai.lua");
luaVM.DoString("function GetFunction(c) Sleep(c.a) end");
luaVM.DoString("function GetFunction2(c) Sleep2(c.a) end");

A<int> C = new A<int>();
C.a = 10;

luaVM.GetFunction("GetFunction").Call(C);//调用lua中的GetFunction方法

try
{

luaVM.GetFunction("NoGetFunction").Call(C);
}
catch (Exception)
{

Console.WriteLine("No function");
}
luaVM.GetFunction("GetFunction2").Call(C);//调用lua中的GetFunction方法
}

public void LuaSleep(int str)
{
Console.WriteLine(str);
}
public void LuaSleep2<T>(int str)
{
Console.WriteLine(str);
}
}

public class A<T>
{
public T a;
}


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