Вместо прямого использования System.Reflection (самодельные атрибуты для каждого класса) удобнее использовать MEF с метаданными.