C#反思问题

时间:2009-09-11 14:10:04

标签: c# .net reflection

使用反射时遇到以下问题。

以下语句的计算结果为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;

任何想法为什么?

2 个答案:

答案 0 :(得分:8)

也许它正在加载不同版本的程序集?

attributes[0].GetType().Assemblytypeof(NUnit.Framework.TestFixtureAttribute).Assembly进行比较。

只需执行引用类型比较 - 即使已从完全相同的文件加载了两个Assembly实例,如果它们是两个单独的实例,则从它们创建的任何类型都将是不同的(使{{1}失败)。

答案 1 :(得分:3)

您正在测试的类可能是使用不同版本的nunit.framework.dll构建的