使用反射时遇到以下问题。
以下语句的计算结果为false:
object[] attributes = someType.GetCustomAttributes(true);
if (attributes[0] is NUnit.Framework.TestFixtureAttribute)
return true;
然而,这评估为真:
object[] attributes = someType.GetCustomAttributes(true);
if (attributes[0].ToString() == "NUnit.Framework.TestFixtureAttribute")
return true;
任何想法为什么?
答案 0 :(得分:8)
也许它正在加载不同版本的程序集?
将attributes[0].GetType().Assembly
与typeof(NUnit.Framework.TestFixtureAttribute).Assembly
进行比较。
只需执行引用类型比较 - 即使已从完全相同的文件加载了两个Assembly
实例,如果它们是两个单独的实例,则从它们创建的任何类型都将是不同的(使{{1}失败)。
答案 1 :(得分:3)
您正在测试的类可能是使用不同版本的nunit.framework.dll构建的