c# - 指定的 Actor 在 Jint 2.0 中无效

标签 c# javascript jint

我刚刚开始在我的 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/

相关文章:

c# - 从 Web API 返回时 Zip 损坏?

c# - 如何在游戏暂停时播放动画(时间刻度 = 0)

javascript - 向 Jint 公开特定 namespace

javascript - 全局分配一个函数给一个名字

c# - DataTable 到 CSV 日期格式

c# - 执行两个 IEnumerable 集合的联合类型

循环内的 JavaScript 闭包 – 简单的实际示例

javascript - 根据屏幕尺寸缩放多个元素

javascript - 使用代码 : Rendering a graph of connected nodes in JS or PHP 绘图

javascript - Jint+JSfuck - 'Index was outside the bounds of the array'