Я создаю утилиту для запуска примеров модульного тестирования, где пользователю будет предоставлена возможность выбрать тест, который он хочет запустить. Я использую отражение, чтобы получить методы. Но это не работает
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);
}
Объект классов всегда пуст. Если я перейду через 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
}
}
}
}
type.GetTypes()
не может компилироваться. каков тип среды CLR переменнойtype
? - person Sriram Sakthivel   schedule 02.03.2016if (item.GetType() == typeof(Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute))
. Также я вижу несколько вещей, которые могут вызвать ошибку компилятора. Я считаю, что это не настоящий код. Чтобы помочь, нам нужен настоящий код. - person Sriram Sakthivel   schedule 02.03.2016