Программно добавить атрибут на метод или параметр
-
25-09-2019 - |
Вопрос
Я могу использовать Typedescriptor.adtattributes, чтобы добавить атрибут к типу во время выполнения. Как мне сделать то же самое для метода и параметра? (может быть, 2 отдельных вопроса ...)
Решение
TypeDescriptor.AddAttributes
только влияет на а очень специфический корпус использования; то есть изнутри System.ComponentModel
. Отказ Для отдых отражения, он знает ничего о дополнительном атрибуте. И действительно, System.ComponentModel
на самом деле не относится к способам или параметрам.
Так короче; Вы не можете. Вам нужно будет хранить эту информацию где-то еще (на заказ), или добавить ее при компиляции времени.
Другие советы
Как я вижу из анализа TypeDescriptor
класс в отражателе, .AddAttributes
Метод внутренне называет .AddProvider
метод. То TypeDescriptionProvider
Пример, переданный ему на самом деле несет ответственность за предоставление метаданных. Вы можете попробовать добавить атрибут [TypedScriptionProviderAttribute] в свой класс и внедрить свой собственный поставщик, вытекающий из TypeDescriptionProvider
сорт. Как гласит документация, путем переопределения TypeDescriptionProvider.CreateInstance
, вы можете обеспечить заменительный объект, тип которого имеет все необходимые атрибуты. Я подозреваю, что атрибуты, применяемые к методам внутри типа замещения, также вступят в силу. Однако я сам не пробовал, так что не стесняйтесь экспериментировать ...