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

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

14
задан MatteS 7 March 2010 в 19:05
поделиться

2 ответа

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

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

17
ответ дан 1 December 2019 в 13:47
поделиться

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

0
ответ дан 1 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: