C# IronPython在classy库中使用类时返回错误的类型

C# IronPython在classy库中使用类时返回错误的类型,c#,ironpython,C#,Ironpython,有人能推荐一个解决这个ironpython bug的方法吗 我有一个包含在外部类库中的类。我在嵌入式ironpython实例中使用这个类。当我的c#应用程序从作用域中检索该类时,这些类似乎不匹配 我的python脚本: import sys import clr from ExternalAssembly import * from IronPythonBug import * internalClass = InternalClass("internal") externalClass =

有人能推荐一个解决这个ironpython bug的方法吗

我有一个包含在外部类库中的类。我在嵌入式ironpython实例中使用这个类。当我的c#应用程序从作用域中检索该类时,这些类似乎不匹配

我的python脚本:

import sys
import clr
from ExternalAssembly import *
from IronPythonBug import *

internalClass = InternalClass("internal")
externalClass = ExternalClass("external")
我的c#应用程序:

控制台输出:

IternalClass matches
Error: ExternalClass does not match
请随意下载说明此错误的项目:

执行
externalClass.GetType()
并检查属性


看到
InternalClass
也来自同一程序集,请将该类型与上面的类型进行比较。

这是由CLR加载程序上下文引起的。对Assembly.LoadFile的调用会将程序集的另一个副本加载到不同的上下文中,从而为您提供一组重复的类型,但具有不同的标识。当我检查ExternalClass.GetType()时,属性看起来与我在C#app中创建的实例上检查GetType()时相同,而不是使用Assembly.LoadFile来获取程序集对象。但是,如果我尝试匹配c#和python实例,它们将失败。而在c#中创建的两个实例将具有匹配的类型对象:ExternalClass external1=新的ExternalClass(“一”);ExternalClass external2=新的ExternalClass(“两”);externalClass.GetType()==external1.GetType()//这将失败external1.GetType()==external2.GetType()//这将正常工作我刚刚看了一下代码,一切看起来都正常。也许你应该问一下IronPython邮件列表。非常感谢。这正好解决了问题。我真的很感激你的建议。
IternalClass matches
Error: ExternalClass does not match