我刚刚开始在我的 C# 应用程序中使用 Jint 2.0。但是我似乎无法从 Jint 中检索值。
即使提供了示例代码:
var engine = new Jint.Engine();
engine.Execute(@" function add(x, y) { return x + y; } var z = add(3, 2);");
var z = engine.GetValue("z");
Console.WriteLine(z); // -> 5
行 var z = engine.GetValue("z");
抛出 InvalidCastException(指定的强制转换无效)
考虑到这是示例代码,我是否缺少一些简单的东西?
更新:如果我将“GetValue”更改为“GetGlobalValue”,我就能让它工作。我仍然想知道这是为什么,所以我没有回答这个问题。
最佳答案
请升级到版本2.1.0.0。我已经用这个最新版本尝试了您的代码,它不会抛出 InvalidCastException。最新版本进行了多项更改和错误修复。 一个简单的解释是,在 2.0 中,GetGlobalValue 函数首先从全局范围中检索值对象本身,然后将其传递给 GetValue 函数。在版本 2.1 中,这是合并的,因此您不会抛出 InvalidCastException。
还需要知道的是,engine.GetValue 函数始终返回 JsValue 对象。您可以添加 AsNumber() 函数,该函数返回 Double 值。
var engine = new Jint.Engine();
engine.Execute(@" function add(x, y) { return x + y; } var z = add(3, 2);");
var z = engine.GetValue("z").AsNumber();
Console.WriteLine(z); // -> 5
由于文档很少,我建议查看为 Jint 编写的测试 https://github.com/sebastienros/jint/tree/master/Jint.Tests/Runtime .
关于c# - 指定的 Actor 在 Jint 2.0 中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23917321/