Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 指定的强制转换在Jint 2.0中无效_C#_Javascript_Jint - Fatal编程技术网

C# 指定的强制转换在Jint 2.0中无效

C# 指定的强制转换在Jint 2.0中无效,c#,javascript,jint,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"); Cons

我刚刚开始在我的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函数首先从全局范围检索value对象本身,然后将其传递给GetValue函数。在版本2.1中,这是组合的,因此不会引发InvalidCastException

另外值得一提的是,engine.GetValue函数总是返回一个JsValue对象。可以添加AsNumber()函数,该函数以双精度形式返回值

        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编写的测试。

错误消息中有更多详细信息吗?它试图向/从何处进行转换?仅此而已,但它表示目标站点是一个JsValue。虽然当我将var z更改为JsValue z时,我得到了相同的错误。