lua语言自学知识点----Lua与.Net相互调用

知识点:

LuaInterface作用是用来完成Lua与C#的相互调用.

LuaInterface核心库:1.luainterface.dll 用于C#读取lua(放在bin目录同级)

2.luanet.dll          用于lua读取C#(放在bin/debug目录下)

写C#脚本时如用到lua,则将luainterface.dll luanet.dll 导入工程,同时引用 using luainterface.dll; 

这样就直接可以引用

Lua   xt =new Lua();

赋值: xt["num"]=2;

xt["str"]="a string";

xt.newtable("mytable");创建新表格

在C#总执行lua文件

1). xt.DoString("num"=2);

xt.DoString("str =' a string ' ");

object [] obj =xt.DoString("return str ,num");

foreach (object  j in obj)

{Console.WriteLine(j);  }

2). xt.DoFile("mylua.xt");---------C#编码

--------------以下是lua编码------------------

(注意编码格式为ANSI)

str ="a string"

num=2

print(str,num)

3). C#语言与lua语言对应关系

Lua                                  C#

nil                                  null

string                            system.string

number                        system.double

boolean                        system.Boolean

table                            luainterface.Luatable

function                       luainterface.function

把C#方法注册到Lua的一个全局方法

一.类中普通方法注册到lua中

1). public void NomalMethod()//普通方法

{

cw....

}

2). Program tempProgram =new Program ();

3).xt.RegisterFunction("NewMethod",tempProgram ,tempProgram.GetType().GetMethod("NomalMethod") );

4).xt.DoString("NewMethod()");            //执行

二.类中静态方法注册到lua中(只是将第三步的第二个参数换为null)

1). public static void MyStaticMethod()//普通方法

{

cw....

}

2). Program TempProgram =new Program ();

3).xt.RegisterFunction("NewStaticMethod", null,TempProgram.GetType().GetMethod("MyStaticMethod") );

4).xt.DoString("NewStaticMethod()");            //执行

在lua中使用C#的类

1). require "luanet"-----------------luanet是库,需要放对位置

2). luanet.load_assembly("System") --加载C#系统

3).int32=luanet. import_type("System.Int32") --定义int32

4). num=int32.Parse("3456")-----.Parse为C#中静态方法此时已被调用

print(int32)

print(num)

lua中访问C#的属性和方法

属性:obj.name

函数:obj:method()

 -------------------C#脚本----------------------------------

namespace  Test

{

class testProgram()

{

public string name ="myname";

public void testMethod()

{

cw....

}

}

}

 -------------------lua脚本----------------------------------

1). require "luanet"-----------------luanet是库,需要放对位置

2). luanet.load_assembly("Test") --加载C#系统

3).Myprogram=luanet. import_type("Test.tastProgram") --定义int32

4).Myprogram001=Myprogram()-----new一下

5).print(Myprogram001.name)

print(Myprogram001:testMethod)

-------------------------------------------------------------------------

上一篇:那些年我们用到的jquery选择器!!


下一篇:Win32 GDI 在内存中绘制彩色的位图