有人可以推荐一个针对这个铁心虫病的解决方法吗?
我有一个包含在外部类库中的类。我在嵌入式ironpython实例中使用了这个类。当我的c#app从范围中检索到类时,这些类似乎不匹配!
我的python脚本:
import sys
import clr
from ExternalAssembly import *
from IronPythonBug import *
internalClass = InternalClass("internal")
externalClass = ExternalClass("external")
我的c#app:
internalClass = scope.GetVariable("internalClass");
externalClass = scope.GetVariable("externalClass");
if (internalClass is InternalClass)
Console.WriteLine("IternalClass matches");
else
Console.WriteLine("Error: InternalClass does not match");
if (externalClass is ExternalClass)
Console.WriteLine("ExternalClass matches");
else
Console.WriteLine("Error: ExternalClass does not match");
控制台输出:
IternalClass matches
Error: ExternalClass does not match
随时下载一个说明此错误的项目: http://www.virtual-chaos.net/zip/IronPythonBug.zip
答案 0 :(得分:6)
这是由CLR加载器上下文引起的。对Assembly.LoadFile的调用将程序集的另一个副本加载到不同的上下文中 - 为您提供一组重复但具有不同身份的类型。而不是使用Assembly.LoadFile来获取程序集对象使用typeof(ExternalClass).Assembly。
答案 1 :(得分:0)
执行externalClass.GetType()
并检查属性。
看到InternalClass
也来自同一个程序集,将该类型与上面的类型进行比较。