2015-07-10 55 views
1

要求是用戶應該可以在文本框中添加Lau腳本,然後我需要檢查用戶是否已經添加了適當的Lua腳本,如果腳本是正確的,那麼我需要運行腳本。任何人都可以向我推薦一些代碼。我嘗試了以下的事情。如何集成Lua和.Net

using (Lua state = new Lua()) 
    { 
     state.DoString(txt.Text);    
     var scriptFunc = state["ScriptFunc"] as LuaFunction; 
     var res = scriptFunc.Call(2,3); 
     Response.Write(res);    
    } 
+0

您的問題有點寬泛,您寫的內容出了什麼問題? – reddy

+0

是的,但在這裏我添加一些手動代碼。在我的代碼中添加狀態[「ScriptFunc」]。但用戶會給任何名字的功能。在這種情況下,我如何檢查給出的是哪個名稱。還有一件事,我可以檢查用戶添加的腳本不會拋出任何錯誤? – Urvi

+1

香草Lua不與C#集成。這是C代碼。您正在使用第三方庫。爲了獲得有意義的幫助,您需要在您的問題中提及這一點,併爲其添加標籤 – Mud

回答

1

你在找什麼是Moon#http://www.moonsharp.org/)。因此,您的示例將如下所示:

double MoonSharpFactorial2() 
{ 
    string scriptCode = @"  
     -- defines a factorial function 
     function fact (n) 
      if (n == 0) then 
       return 1 
      else 
       return n*fact(n - 1) 
      end 
     end"; 

    Script script = new Script();  
    script.DoString(scriptCode); 

    DynValue res = script.Call(script.Globals["fact"], 4); 

    return res.Number; 
} 
1

根據我的理解,您嘗試使用標準Lua API在您的C#應用​​程序中運行Lua代碼。

不幸的是,這是行不通的,因爲標準的Lua是用C語言編寫的,雖然它的結構非常類似於C#,但不是C#,並且與.NET框架不兼容。

相反,您必須使用第三方封裝器,如NLua。 ;)