使用反射获取自定义属性

时间:2016-03-02 10:27:33

标签: c# unit-testing system.reflection

我正在构建一个实用程序来运行单元测试用例,向用户提供选择他们想要运行的测试的选项。我正在使用反射来获取方法。但它不起作用

var assembly = Assembly.Load("TestingAssembly");
var classes = assembly.GetTypes().Where(m => m.GetCustomAttributes(typeof(TestClassAttribute), false).Length > 0);
 foreach (var type in classes)
 {
   var methods= type.GetTypes().Where(m1 => m1.GetCustomAttributes(typeof(TestMethodAttribute), false).Length > 0);
 }

classes对象始终为空。如果我遍历assembly.GetTypes并获取自定义属性,它将返回计数。但是,我仍然无法匹敌它。在下面的代码中,属性包含一个名为TestClassAttribute的项。但是当我将属性的类型与TestClassAttribute匹配时,它就会失败。

foreach (Type type in assembly.GetTypes())
{
  if (type.GetCustomAttributes().Count() > 0)
   {
     var attributes = type.GetCustomAttributes();
       foreach (var item in attributes)
       {
         if (item.GetType() == Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute)
         {
            //Do something
         }
       }
   }
}

0 个答案:

没有答案