gpt4 book ai didi

c# - 在 C# 中嵌入 IronPython 2 - DefaultModule.Globals 的替代品是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:30 24 4
gpt4 key购买 nike

我正在尝试转换一些 IronPython 1 代码:

var ptype = this.engine.DefaultModule.Globals[ironPythonClassName];

我有一个声明类的脚本。我使用 Python 引擎来执行脚本。

在 IronPython 2 中,我如何获取变量的名称(包括类)?

最佳答案

没有必要创建一个新的范围,因为 CompiledCode 实例似乎是用一个范围创建的。

ScriptEngine engine = Python.CreateEngine();
ScriptSource source = engine.CreateScriptSourceFromFile(fileName);
CompiledCode code = source.Compile();
ScriptScope scope = code.DefaultScope;
code.Execute();
var names = scope.GetVariableNames();

吐槽

上面的脚本类有点像噩梦 - 太多的功能重复和实例之间奇怪的链接。

为什么 MS 不使用众所周知的模式“引擎在范围内执行从源代码编译的代码”?

所以模型可能是:

  • 编译源代码生成代码(编译器类)
  • 提供或创建范围(范围类)
  • 绑定(bind)代码和范围并将它们提供给引擎执行(引擎类)

咆哮

关于c# - 在 C# 中嵌入 IronPython 2 - DefaultModule.Globals 的替代品是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com