在不执行IronPython脚本的情况下获取变量

时间:2016-08-31 14:40:04

标签: ironpython

有没有办法检索脚本编写器定义的全局变量而不实际执行脚本?例如,仅编译代码

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你基本上只想在执行某些操作之前执行脚本的一些初始部分。鉴于我操作范围变量而不是“全局”变量,我将做的是以下内容。

    [Test]
    public void TestPythonDymanicCall()
    {
        string customScript = @"
            scriptScopeVar1 = 3
            def executeSomething():
                global scriptScopeVar1
                scriptScopeVar1 = scriptScopeVar1 + 1
        ".unindent();
        var engine = Python.CreateEngine();
        var scope = engine.CreateScope();
        engine.Execute(customScript, scope);
        Assert.AreEqual(3, engine.Execute("scriptScopeVar1", scope));
        engine.Execute("executeSomething()", scope);
        Assert.AreEqual(4, engine.Execute("scriptScopeVar1", scope));
    }