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