¿A qué hora durante el tiempo de ejecución se ejecuta un constructor de atributos?

StackOverflow https://stackoverflow.com/questions/617273

  •  03-07-2019
  •  | 
  •  

Pregunta

Intentando encontrar alguna referencia detallada sobre las complejidades de los atributos. Cualquier ayuda sería apreciada.

En este punto, ¿me gustaría saber específicamente en qué momento durante el tiempo de ejecución se ejecuta un constructor de atributos?

  • Si se trata de una clase
  • Si se trata de una propiedad
  • Si se trata de un método

Gracias.

¿Fue útil?

Solución

El constructor se invoca cuando llama a GetCustomAttributes () en el tipo o MemberInfo.

Otros consejos

Leyendo la norma (17.3.2 en la versión C # 2.0) no está especificado. Solo la forma de convertir de la metatada a una instancia es.

Por lo tanto, es posible que deba realizar pruebas en diferentes implementaciones, porque si no se especifica, se interpretará de manera diferente.

Lo único de lo que puedes estar seguro es que se llamará antes de que sea necesario. No está definido la hora exacta en que se llamará al constructor.

De todos modos, el comportamiento no está especificado, por lo que no debes confiar en cada vez que la implementación actual llame al constructur.

Los atributos son decoraciones que almacenan metadatos o información sobre un tipo. .Net Framework utiliza en gran medida este tipo de información para realizar un procesamiento adicional al crear instancias.

El atributo se construye solo cuando lo solicita otra clase, con Type.GetCustomAttributes () por ejemplo. Por lo tanto, incluso usted puede crear sus propios atributos y luego solicitar sus atributos personalizados.

public class MyOwnAttribute: Attribute {}

/ * en algún momento de otra clase * /

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top