Программно добавить атрибут на метод или параметр

StackOverflow https://stackoverflow.com/questions/2397519

  •  25-09-2019
  •  | 
  •  

Вопрос

Я могу использовать Typedescriptor.adtattributes, чтобы добавить атрибут к типу во время выполнения. Как мне сделать то же самое для метода и параметра? (может быть, 2 отдельных вопроса ...)

Это было полезно?

Решение

TypeDescriptor.AddAttributes только влияет на а очень специфический корпус использования; то есть изнутри System.ComponentModel. Отказ Для отдых отражения, он знает ничего о дополнительном атрибуте. И действительно, System.ComponentModel на самом деле не относится к способам или параметрам.

Так короче; Вы не можете. Вам нужно будет хранить эту информацию где-то еще (на заказ), или добавить ее при компиляции времени.

Другие советы

Как я вижу из анализа TypeDescriptor класс в отражателе, .AddAttributes Метод внутренне называет .AddProvider метод. То TypeDescriptionProvider Пример, переданный ему на самом деле несет ответственность за предоставление метаданных. Вы можете попробовать добавить атрибут [TypedScriptionProviderAttribute] в свой класс и внедрить свой собственный поставщик, вытекающий из TypeDescriptionProvider сорт. Как гласит документация, путем переопределения TypeDescriptionProvider.CreateInstance, вы можете обеспечить заменительный объект, тип которого имеет все необходимые атрибуты. Я подозреваю, что атрибуты, применяемые к методам внутри типа замещения, также вступят в силу. Однако я сам не пробовал, так что не стесняйтесь экспериментировать ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top