À quelle heure pendant l'exécution un constructeur d'attributs est-il exécuté?

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

  •  03-07-2019
  •  | 
  •  

Question

Essayer de trouver une référence verbeuse sur les subtilités des attributs. Toute aide serait la bienvenue.

À ce stade, j'aimerais savoir en particulier à quelle heure un constructeur d'attributs est exécuté pendant l'exécution.

  • Si c'est fini une classe
  • S'il s'agit d'une propriété
  • S'il s'agit d'une méthode

Merci.

Était-ce utile?

La solution

Le constructeur est appelé lorsque vous appelez GetCustomAttributes () sur le type ou MemberInfo.

Autres conseils

La lecture de la norme (17.3.2 dans la version C # 2.0) n’est pas spécifiée. Seul le moyen de convertir le métatada en instance est.

Vous devrez peut-être tester différentes implémentations, car si elles ne sont pas spécifiées, elles seront interprétées différemment.

La seule chose dont vous pouvez être sûr, c'est qu'il sera appelé avant qu'il ne soit nécessaire. Ce n'est pas défini l'heure exacte à laquelle le constructeur sera appelé.

Quoi qu’il en soit, le comportement n’est pas spécifié, vous ne devez donc pas vous fier à la construction appelée par l’implémentation en cours.

Les attributs sont des décorations qui stockent des métadonnées ou des informations sur un type. .Net Framework utilise énormément ce type d'informations pour effectuer des traitements supplémentaires lors de la création d'instances.

L'attribut est construit uniquement à la demande d'une autre classe, avec Type.GetCustomAttributes () par exemple. Ainsi, même vous pouvez créer vos propres attributs, puis demander vos attributs personnalisés.

public class MyOwnAttribute: Attribute {}

/ * à un moment donné dans une autre classe * /

void CheckIfClassIsDecoratedWithMyOwnAttribute()
{
    var instance = new MyClass();
    if (instance.GetType().GetCustomAttributes(typeof(MyOwnAttribute)))
    {
       //do whatever you want
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top