2009-09-25 121 views
1

我正在研究將腳本添加到我的C#應用​​程序中。我一直在Lua和C#之間進行辯論(通過CSharpCodeProvider)。將C#對象暴露給Lua腳本

無論我使用哪種語言,我都需要腳本能夠訪問/操作主應用程序中的對象/數組。用C#我應該能夠暴露我的對象和接口函數,沒有太多問題。

但是,與Lua似乎我只能通過公開的函數訪問應用程序對象。我看不出我有多大的接口,比如數組。我要麼需要Array1Set(索引,值)/ Array1Get(索引)函數或ArraySet(array_no,索引,值)/ ....是否有一個優雅的方式來實現呢?我不想將數組複製到Lua機器上,操作它,然後將它拉回到我的應用程序中。

感謝

+1

您會發現Lua語言社區對新用戶非常友好和樂於助人,但對拼寫也很敏感。 Lua是一個專有名詞,用於月亮的葡萄牙語。它是大寫的,但從來沒有全部上限,因爲它不是任何形式的縮寫。 – RBerteig 2009-09-25 00:55:13

回答

3

你應該看看LuaInterface項目,支持Lua和.NET之間的充分融合。向Google詢問更多關於LuaInterface的信息,找到許多有用的討論,示例和想法頁面。

的以任何語言共享Lua和任何應用之間的對象的一般方法是定義一個userdata__index()__newindex()元方法(以及可能其它)包含任一對象實例本身(讓Lua的GC管理對象的生存期),或一個指向實例的指針(需要與GC仔細合作)。元方法允許Lua代碼操縱對象的字段,就好像它們存儲在Lua表中一樣。

+0

非常感謝,這就是我一直在尋找的!我的谷歌搜索沒有找到LuaInterface。 – Aaron 2009-10-01 04:52:54