use*_*430 10 c# lua dynamic-language-runtime
首先,我想提前为我的英语推荐.
我的问题是具体说明我需要在C#应用程序中能够解释为所述应用程序提供的Lua脚本.Lua脚本必须能够访问用C#编写的类.
在搜索堆栈溢出以获得答案后,我认为处理此主题的问题已经过时(我认为在动态语言运行时成为.NET Framework的一部分之前就已经问到了这些问题,而且我认为事情现在变得简单了DLR).
基本上,我想做的就是这个
TypeThatExecutesLua.MethodToLoadLuaScript(script.lua);
TypeThatExecutesLua.Execute();
Run Code Online (Sandbox Code Playgroud)
现在,假设我们不关心script.lua返回什么.但是有些情况下第二行会是这样的:
dynamic result = TypeThatExecutesLua.Execute();
Run Code Online (Sandbox Code Playgroud)
或者:动态结果; TypeThatExecutesLua.Execute(out result);
同样,如果可能的话,我希望能够将参数传递给脚本(不确定参数在这种情况下是否正确,我对脚本知之甚少),如下所示:
int argument
TypeThatExecutesLua.Execute(argument);
Run Code Online (Sandbox Code Playgroud)
这可能是一个非常基本的问题,但我真的很感激能够真正向我解释如何做到这一点的答案,而不是指向某个页面的链接,因为我缺乏基本知识来理解我遇到的大部分材料到目前为止,通过搜索网络(我相当擅长C#,但这超出了语言本身的范围).
作为最后一点,我想说,即使Lua是我的目标语言,如果解决方案与任何语言相似或相同,只需要在项目中下载和引用的dll以及dll的界面等各种变化本身,我想知道.
看起来 DynamicLua ( GitHub , NuGet Package ) 有你想要的:
dynamic lua = new DynamicLua.DynamicLua();
lua("print('hello world')"); // => hello world
double answer = lua("return 42");
Console.WriteLine(answer); // => 42
var arg = 5;
lua("function luafunction(a) return a + 1 end");
dynamic answer2 = lua.luafunction(arg);
Console.WriteLine(answer2); // => 6
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
DynamicLua 基于NLua,它也可以完成所有这些,但它会更复杂。
归档时间: |
|
查看次数: |
9274 次 |
最近记录: |