Возможно, вы захотите написать собственный дескриптор типа, который предоставляет ICustomAttributeProvider для его различных членов. Хотя это не так сложно реализовать, я обнаружил, что обнаружение дескриптора типа в .NET немного сломано. Большинство фреймворковых функций распознают их, но другие этого не делают, а просто используют GetType (). GetProperty () (например, WCF DataServiceContext).
Я предлагаю вам придерживаться вашего текущего подхода, но я бы где-то сделал имя категории константным (значения-атрибуты должны быть константами), чтобы вы могли изменить его в одном месте. Если вам нужна помощь в реализации дескриптора типа, дайте мне знать, и я уверен, что смогу привести пример. Взгляните на классы TypeDescriptor, TypeDescriptorProvider и PropertyDescriptor в MSDN, вы должны быть очень осторожны, особенно с таким огромным классом (и обычно у вас есть больше, чем просто атрибут CategoryAttribute для свойств, который требует смешивания встроенного дескриптора типа и ваш заказ).