【发布时间】:2015-03-31 06:24:25
【问题描述】:
这是 C# 代码:
string jsScript = "var x = {A: 10, B: 100}";
scriptEngine.Evaluate(jsScript);
var result = scriptEngine.Evaluate("x");
结果是一个 WindowsScriptItem 对象的实例,我怎样才能得到值 10 和 100?
【问题讨论】:
标签: clearscript
这是 C# 代码:
string jsScript = "var x = {A: 10, B: 100}";
scriptEngine.Evaluate(jsScript);
var result = scriptEngine.Evaluate("x");
结果是一个 WindowsScriptItem 对象的实例,我怎样才能得到值 10 和 100?
【问题讨论】:
标签: clearscript
如果你知道对象的属性名,你可以这样做:
dynamic dynamicResult = result;
Console.WriteLine(dynamicResult.A);
Console.WriteLine(dynamicResult.B);
如果您不知道属性名称,可以这样做:
dynamic dynamicResult = result;
foreach (var name in dynamicResult.GetDynamicMemberNames())
Console.WriteLine("{0}: {1}", name, dynamicResult[name]);
如果对象的属性值本身可以是对象,您显然需要更复杂的东西。
【讨论】:
Execute 是 void,但 Evaluate 返回结果。如果该结果是脚本对象,则上述内容应该有效。也可以使用ScriptObject类来枚举不带dynamic的属性,应该会更高效。