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.
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.
来源:https://stackoverflow.com/questions/4852879/get-all-types-in-assembly-with-custom-attribute