c# - 将 c# 类型注入(inject) Ironpython

标签 c# python ironpython

现在我可以使用下面的代码在 IronPython 中访问我的 c# 类型,如下所示

import clr
clr.AddReference('myDLL.dll')
import myType
obj = myType()

但是我不希望脚本开发人员在 Python 源代码中有 clr.AddReference('myDLL.dll') 行,并注入(inject) myDLL。 dll(和/或 c# 类)直接从 c# 到 ScriptEngine,因此之前的代码类似于:

import myType

obj = myType()  

我怎样才能做到这一点?

最佳答案

您可以使用以下解决方案解决此问题:

ScriptRuntime runtime = Python.CreateRuntime();
runtime.LoadAssembly(Assembly.GetAssembly(typeof(MyNameSpace.MyClass)));
ScriptEngine eng = runtime.GetEngine("py");
ScriptScope scope = eng.CreateScope();
ScriptSource src = eng.CreateScriptSourceFromString(MySource, SourceCodeKind.Statements);
var result = src.Execute(scope);

现在,您可以在 python 脚本中编写:

from MyNameSpace import *
n=MyClass()
print n.DoSomeThing()

关于c# - 将 c# 类型注入(inject) Ironpython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44603598/

相关文章:

python - Fabric 全局设置环境变量

c# - 如何向嵌入式 IronPython 解释器公开重载方法?

wpf - 如何在 IronPython WPF 项目中创建 UserControl?

c# - 从 WP7 将数据发布到 WCF 服务

c# - 在 App.config 中设置 WCF ClientCredentials

c# - 当 B 可以类型转换为 A 时,如何将 A 转换为对象 A 类?

c# - 在 MSI 包上执行批处理命令

python - 为什么在 argparse 中, 'True' 总是 'True' ?

python - Visual Studio 2015 IronPython

python - java.io.IOException : Cannot run program "python" using Spark in Pycharm (Windows) 异常