我正在尝试使用Iron
Python作为C#GUI和一些C#库之间的中介,以便它可以在编译后编写脚本.
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的解释器存在问题,因为它看起来不同,因为它是某种方式看到他们处于不同的背景或范围?
解决方法
原文地址:https://www.jb51.cc/csharp/91729.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。