2015-03-13 74 views
0

我的問題是原始的。但它非常有用。我查了Sebastien Ros Jint申請GitHub如何在使用Jint運行Js代碼時使用GetValues?

我怎樣才能GetValue屬性多次?

GetValues(x,y,z...)GetValue("x").GetValue("y").GetValue("z")。因爲我需要x,y,z ..結果。不僅x值。

我有一個項目,我必須運行JS代碼,但有很多如果比較(小心它不是「如果 - 其他」,有如果,如果,如果繼續...)我有訪問所有if語句結果。我發現有GetValue方法。但我只能訪問一個值。當我想訪問「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());

我檢查Jurassic on codeplex

和我用它如下:

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();

QUEST ION:

我該如何做到myproject內部但使用Jint而不是侏羅紀?我需要Jint multiGetValues財產......

+0

你還需要幫助嗎? – Milad 2015-03-27 11:51:55

回答

1

您可以從JavaScript返回一個數組: var result = (object[])engine.Execute("[x, y, z]").GetCompletionValue().ToObject(); 或動態對象 dynamic result = engine.Execute("{x, y, z}").GetCompletionValue().ToObject(); Console.WriteLine(result.x);

相關問題