如何使用反射来查找程序集中的某些类?

时间:2015-07-10 15:35:46

标签: c# reflection

如果我加载了.Net程序集,并且我想使用反射来查找用某些属性修饰的类(类型),例如

Assembly assy = Assembly.Load(assyPath);
var classesInAssy = assy.GetTypes();

我如何在C#中做到这一点?我到目前为止

{{1}}

但此后我才难倒。我现在知道我必须在类型上使用CustomAttibutes集合,但是我使用VS2013 Pro(包括单元测试),并且有问题的属性不是我的一个,而是MS TestClass属性。但是我似乎无法引用它在(Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)中定义的程序集,即使dll在VS2013的“添加引用”对话框中列出。我错过了什么吗?

TIA,

1 个答案:

答案 0 :(得分:0)

Jon Skeet的回答是使用GetCustomAttributes

Type[] classesWithAttr = assy.GetTypes()
    .Where(t => t.GetCustomAttributes(typeof(MyClassAttribute), false).Length > 0)
    .ToArray();