Programación añadir un atributo a un método o parámetro
-
25-09-2019 - |
Pregunta
Me puede utilizar TypeDescriptor.AddAttributes añadir un atributo a un tipo en tiempo de ejecución. ¿Cómo puedo hacer lo mismo para un método y un parámetro? (Quizás 2 preguntas separadas ...)
Solución
TypeDescriptor.AddAttributes
sólo afecta a un muy de casos de uso específico; es decir, desde dentro de System.ComponentModel
. Para el descansar de la reflexión, se sabe no sobre el atributo adicional. Y, en efecto, System.ComponentModel
en realidad no se aplica a los métodos o parámetros.
Así que en breve; no se puede. Usted necesitará para almacenar esta información en otro lugar (a medida), o añadirlo en tiempo de compilación.
Otros consejos
A mi desde el análisis de la clase TypeDescriptor
en el reflector, el método .AddAttributes
llama internamente al método .AddProvider
. La instancia TypeDescriptionProvider
se le pasa en realidad es responsable de proporcionar los meta-datos. Usted podría intentar agregar el [TypeDescriptionProviderAttribute] atributo a la clase y poner en práctica su propio proveedor mediante la derivación de la clase TypeDescriptionProvider
. Como dice la documentación, anulando TypeDescriptionProvider.CreateInstance
, se podría proporcionar un objeto sustituto cuyo tipo tiene todas las cualidades necesarias. Sospecho que los atributos aplicados a métodos dentro del tipo de sustitución también se llevará a efecto. Sin embargo, no he probado yo mismo, así que siéntete libre de experimentar ...