There is no other way then iterating over the properties and check the attributes. But you should be able to do this in one Linq statement.
Use GetCustomAttributes
on the GetProperties
method of the types.
You could optimize the performance, if you mark all classes that use this attributes are marked by an interface, common base class or an class attribute. So you could prefetch the classes instead to iterate over all types.