【问题标题】:ClearScript: How to output an object?ClearScript:如何输出一个对象?
【发布时间】: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


    【解决方案1】:

    如果你知道对象的属性名,你可以这样做:

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

    如果对象的属性值本身可以是对象,您显然需要更复杂的东西。

    【讨论】:

    • 使用 Engine.Execute 方法时是否可以执行这样的 foreach?这个方法是无效的(也是Evaluate方法),那么如何分配一个结果呢?谢谢。
    • Executevoid,但 Evaluate 返回结果。如果该结果是脚本对象,则上述内容应该有效。也可以使用ScriptObject类来枚举不带dynamic的属性,应该会更高效。
    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2022-01-23
    • 2017-03-08
    • 2012-09-19
    • 2020-06-30
    • 2014-08-07
    相关资源
    最近更新 更多