我将尝试使用IronPython作为C# GUI和一些C#库之间的中介,以便可以在编译后进行脚本编写。
我有一个类库DLL,它被GUI和Python都使用,并且大致如下:
IronPython代码如下:
当我调用最后一段代码时,source.Execute(scope)成功返回,但当我尝试调用GetVariable时,它抛出以下异常。
我有一个类库DLL,它被GUI和Python都使用,并且大致如下:
namespace MyLib
{
public class MyClass
{
public string Name { get; set; }
public MyClass(string name)
{
this.Name = name;
}
}
}
IronPython代码如下:
import clr
clr.AddReferenceToFile(r"MyLib.dll")
from MyLib import MyClass
ReturnObject = MyClass("Test")
然后,在C#中我会这样调用它:
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = null;
scope = engine.CreateScope();
ScriptSource source = engine.CreateScriptSourceFromFile("Script.py");
source.Execute(scope);
MyClass mc = scope.GetVariable<MyClass>("ReturnObject ")
当我调用最后一段代码时,source.Execute(scope)成功返回,但当我尝试调用GetVariable时,它抛出以下异常。
Microsoft.Scripting.ArgumentTypeException: expected MyClass , got MyClass
因此,您可以看到类名完全相同,但由于某种原因,它认为它们是不同的。
DLL位于与.py文件不同的目录中(我只是没有费心写出所有路径设置的内容),可能是由于IronPython解释器看到这些对象与不同上下文或作用域中的对象不同而导致问题吗?