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 ...)

¿Fue útil?

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 ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top