Как я могу использовать GetValues при запуске Js-кодов с помощью Jint?
Мой вопрос примитивен. Но это очень полезно. Я проверял приложение Sébastien Ros - MSFT Jint на GitHub.
Как я могу получить свойство GetValue несколько раз?
GetValues(x,y,z...)
или же GetValue("x").GetValue("y").GetValue("z")
, потому что мне нужен x,y,z.. результат. не только х значение.
У меня есть проект, в котором я должен запустить js-коды, но есть много сравнений if (будьте осторожны, это не "if-else", есть if-if-if и продолжайте...) У меня есть доступ ко всем if Результаты заявления. Я обнаружил, что есть GetValue
метод. Но я могу получить доступ только к одному значению. Когда я хочу получить доступ к "у", я должен использовать GetValue("y")
, Но я хочу видеть значение "х" в то же время. Может быть, я желаю этого 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 вместо Jurassic? Мне нужно свойство Jint multiGetValues ...
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);