应该是两个不等的类型参数类型.BaseType;类型b=typeof(MessageContext);Debug.WriteLine(a.AssemblyQualifiedName);Debug.WriteLine(b.AssemblyQualifiedName);Debug.WriteLine(a.Equals(b));这是它的输出:OrtzIRC.Common.MessageContext,OrtzIRC.Common,Version=1.0.0.0,Culture=neutral,PublicKeyToken=nullOrtzIRC.Common.MessageContext,OrtzIRC.Common,Version=1.0.0.0,Culture=neutral,PublicKeyToken=nullfalse我不明白这两种类型有何不同?由不同应用程序域[.NET]或类加载器[Java]加载的相同类/类型不会比较相等,也不能直接分配给彼此。您可能有两个包含该类型的DLL副本-一个由主程序加载,另一个由Assembly.Load*(...)方法加载?尝试显示/比较属性:a.Assembly.Equals(b.Assembly)和a.Assembly.Location.Equals(b.Assembly.Location)通常您只需要每个DLL的一个副本并将其加载到单个应用程序域中。如果从不同版本的程序集加载两种类型,就会发生这种情况。.NET认为它们是不同的、不相关的类型。检查Debug.WriteLine(a.AssemblyQualifiedName);Debug.WriteLine(b.AssemblyQualifiedName);尝试:Debug.Writeline(a.Equals(b));这就是你应该如何比较类型:C#对象类型比较我认为你类型层次结构中存在问题...以上是C#学习教程:应该是两种不相等类型共有的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
