2009-08-20 13 views
6

dos preguntas acerca de atributos:.NET: ¿Cuándo se crean instancias de los atributos y puedo obtener una referencia al tipo que están decorando?

  1. Cuando se crean instancias de clases de atributos? ¿Cuándo se accede por primera vez al tipo o al inicio de la ejecución?
  2. Desde dentro de la clase de atributo, ¿puedo averiguar para qué tipo se creó la instancia del atributo?

La idea es que quiero hacer una lista de todas las clases de mi ensamblaje que tienen mi atributo aplicado. Podría, por supuesto, iterar a través de todos ellos con reflexión y verificación, pero sería mejor si el atributo simplemente se pudiera agregar a una lista estática global al crear instancias.

Respuesta

11

Los atributos son no automáticamente instanciados al inicio de la aplicación. La única forma de ver qué tipos (o cualquier elemento de IL, para el caso) tiene el atributo aplicado es iterar todo y verificar uno por uno. En consecuencia, los atributos no pueden tomar automáticamente el control de un programa.

Básicamente son metadatos adjuntos a algunas cosas. Se llama a su constructor cuando reflection ejemplifica la clase de atributo que representa el atributo en tiempo de ejecución. Esto solo ocurre cuando solicita reflexión para hacerlo (por el método Type.GetCustomAttributes)

Cuestiones relacionadas