gpt4 book ai didi

c# - 如何在 C# 5.0 应用程序中嵌入 lua(或其他脚本语言)

转载 作者:可可西里 更新时间:2023-11-01 09:13:42 24 4
gpt4 key购买 nike

首先,我想提前为我的英语申请。

我的问题具体是关于在 C# 应用程序中我需要具备什么才能解释提供给所述应用程序的 Lua 脚本。 Lua 脚本必须能够访问用 C# 编写的类。

在搜索堆栈溢出的答案后,我认为处理这个主题的问题已经过时(我认为在动态语言运行时成为 .NET Framework 的一部分之前就有人问过这些问题,我认为现在事情变得更简单了我们有 DLR)。

基本上,我想做的就是这个

 TypeThatExecutesLua.MethodToLoadLuaScript(script.lua);
TypeThatExecutesLua.Execute();

现在,假设我们不关心 script.lua 返回什么。但是在某些情况下,第二行会是这样的:

dynamic result = TypeThatExecutesLua.Execute();

或者这个: 动态结果; TypeThatExecutesLua.Execute(输出结果);

同样,如果可能的话,我希望能够将参数传递给脚本(不确定在这种情况下参数是否是正确的词,我对脚本知之甚少),如下所示:

int argument
TypeThatExecutesLua.Execute(argument);

这可能是一个非常基本的问题,但我真的很感激能真正向我解释如何做到这一点的答案,而不是指向某个页面的链接,因为我缺乏理解大部分 Material 的基本知识到目前为止,我是通过搜索网络了解到的(我相当擅长 C#,但这超出了语言本身的范围)。

最后一点,我想说的是,即使 Lua 是我的目标语言,如果解决方案与任何语言相似或相同,区别仅在于要在项目中下载和引用哪个 dll,以及dll本身的接口(interface),我想知道。

最佳答案

看起来 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();

DynamicLua 基于NLua , 它也可以完成所有这些,但会更复杂。

关于c# - 如何在 C# 5.0 应用程序中嵌入 lua(或其他脚本语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22267758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com