0

私の質問は原始的です。しかし、それは非常に便利です。GitHubでSebastien Ros Jint アプリケーションを確認しました。

GetValue プロパティを複数回取得するにはどうすればよいですか?

GetValues(x,y,z...)またはGetValue("x").GetValue("y").GetValue("z")。x、y、z ..の結果が必要だからです。x 値だけではありません。

私はjsコードを実行しなければならないプロジェクトを持っていますが、if比較がたくさんあります(「if-else」ではないことに注意してください。if-if-ifがあります...)すべてのifにアクセスできます声明の結果。方法があることを発見しましたGetValue。しかし、アクセスできる値は 1 つだけです。「y」にアクセスしたいときは、 を使わなければなりませんGetValue("y")。しかし、同時に「x」の値を見たいのです。多分私はそれを望んでいGetValues("x","y","z"...)ます。

            var square = new Engine()
           .SetValue("x", 3) // define a new variable
           .SetValue("y",4)
           .Execute(" var isok1=false;  var isok2= false; if(3>1) { x * x; isok1=true; } if(2>1) { y * y }").GetValue("y") // execute a statement
           .ToObject() // converts the value to .NET
           ;
            Console.WriteLine(square.ToString());

      var square = new Engine()
           .SetValue("x", 3) // define a new variable
           .SetValue("y",4)
           .Execute(" var isok1=false;  var isok2= false; if(3>1) { x * x; isok1=true; } if(2>1) { y * y }      isok1;").GetCompletionValue() // execute a statement
           .ToObject() // converts the value to .NET
           ;
            Console.WriteLine(square.ToString());

コードプレックスでジュラシックをチェックしました

そして、私はそれを以下のように使用しました:

   var engine = new Jurassic.ScriptEngine();
            engine.SetGlobalValue("x", 15);
            engine.SetGlobalValue("y", 2);
          
            engine.Execute(@" var isok1=false;  var isok2= false; if(3>1) { x=x * x; isok1=true; } if(2>1) { y= y * y; isok2=true; } ");
            Console.WriteLine(engine.GetGlobalValue<int>("x"));
            Console.WriteLine(engine.GetGlobalValue<int>("y"));
            Console.WriteLine(engine.GetGlobalValue<bool>("isok1"));
            Console.WriteLine(engine.GetGlobalValue<bool>("isok2"));
            Console.ReadKey();

質問:

myproject 内でそれを行うにはどうすればよいですか?しかし、ジュラシックの代わりにジントを使用していますか? Jint multiGetValues プロパティが必要です...

4

1 に答える 1

2

JavaScript から配列を返すことができます: var result = (object[])engine.Execute("[x, y, z]").GetCompletionValue().ToObject(); または動的オブジェクト dynamic result = engine.Execute("{x, y, z}").GetCompletionValue().ToObject(); Console.WriteLine(result.x);

于 2015-10-19T21:39:36.547 に答える