lua語言自學知識點----Lua與.Net相互調用

知識點:

LuaInterface做用是用來完成Lua與C#的相互調用.函數

LuaInterface核心庫:1.luainterface.dll 用於C#讀取lua(放在bin目錄同級)ui

                                2.luanet.dll          用於lua讀取C#(放在bin/debug目錄下)編碼

寫C#腳本時如用到lua,則將luainterface.dll luanet.dll 導入工程,同時引用 using luainterface.dll; lua

這樣就直接能夠引用spa

     Lua   xt =new Lua();debug

賦值: xt["num"]=2;string

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

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

在C#總執行lua文件

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

    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)

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

相關文章
相關標籤/搜索