Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get all types in assembly with custom attribute

Is there an elegant way to get all the types in an assembly that have a custom attribute?

So if I have a class

[Findable] public class MyFindableClass {} 

I would like to be able to find it in a collection of types returned by Assembly.GetTypes(...)

I can do it with a big vile hack, but I'm sure someone has a nicer way.

like image 435
Aidan Avatar asked Jan 31 '11 15:01

Aidan


1 Answers

I wouldn't think you can dodge enumerating every type in the assembly, checking for the attribute, but you could use LINQ to make the query easier to understand:

Assembly assembly = ... var types = from type in assembly.GetTypes()             where Attribute.IsDefined(type, typeof(FindableAttribute))             select type; 

EDIT: Moved from MemberInfo.GetCustomAttributes to Attribute.IsDefined based on Marc Gravell's suggestion.

like image 120
Ani Avatar answered Oct 01 '22 13:10

Ani