2015-07-10 82 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。 ;)