Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Maîtriser les attributs en C# : enrichir le code avec des métadonnées

Un attribut est une étiquette déclarative qui transmet des informations au runtime sur les comportements d'éléments (classes, méthodes, structures, énumérateurs, assemblies...).

On ajoute des métadonnées (instructions compilateur, commentaires, descriptions...) via des attributs. Notation : crochets [ ] au-dessus de l'élément.

Deux types : prédefinis (framework .NET) et personnalisés.

Spécification d'un attribut

[attribut(paramètres_positionnels, paramètre_nommé = valeur, ...)] élément

Attributs prédéfinis

AttributeUsage

Définit comment un attribut personnalisé peut être utilisé.

[AttributeUsage(validon, AllowMultiple = allowmultiple, Inherited = inherited)]

Conditional

Marque une méthode dont l'exécution dépend d'un symbole de préprocesseur (ex: DEBUG, TRACE). Compilation conditionnelle des appels.

[Conditional("DEBUG")]
public static void Message(string msg) { Console.WriteLine(msg); }

Obsolete

Marque un élément comme obsolète. Avertissement ou erreur à la compilation.

[Obsolete("N'utilisez pas OldMethod, utilisez NewMethod", true)]
static void OldMethod() { ... }

Le second paramètre true = erreur compilation, false = avertissement (défaut).

Création d'attributs personnalisés

4 étapes :

  1. Déclarer l'attribut (hériter de System.Attribute)
  2. Construire l'attribut (constructeur, propriétés)
  3. Appliquer sur élément cible
  4. Accéder via réflexion (runtime)

Déclaration


[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | ..., AllowMultiple = true)]
public class InfoDebug : System.Attribute

Construction : classe InfoDebug


public class InfoDebug : System.Attribute
{
    private int numeroBug;
    private string developpeur;
    private string derniereRevue;
    public string message;
    
    public InfoDebug(int bg, string dev, string d)
    {
        this.numeroBug = bg;
        this.developpeur = dev;
        this.derniereRevue = d;
    }
    
    public int NumeroBug { get { return numeroBug; } }
    public string Developpeur { get { return developpeur; } }
    public string DerniereRevue { get { return derniereRevue; } }
    public string Message { get { return message; } set { message = value; } }
}

Application


[InfoDebug(45, "Zara Ali", "12/08/2012", Message = "Type retour incorrect")]
[InfoDebug(49, "Nuha Ali", "10/10/2012", Message = "Variable inutilisée")]
class Rectangle
{
    protected double longueur, largeur;
    
    public Rectangle(double l, double w) { longueur = l; largeur = w; }
    
    [InfoDebug(55, "Zara Ali", "19/10/2012", Message = "Type retour incorrect")]
    public double ObtenirAire() { return longueur * largeur; }
    
    [InfoDebug(56, "Zara Ali", "19/10/2012")]
    public void Afficher() { ... }
}

La lecture via réflexion sera couverte au chapitre suivant.

Langue C

  1. Maîtriser Java 8 Optional : Guide pratique pour un code sans null
  2. Comprendre les types nullables en C# : gérer les valeurs nulles en toute sécurité
  3. Ferro-Titanit® Cromoni – Alliage de titane haute résistance, non magnétique
  4. Alliage AgCu20 : Propriétés mécaniques et thermiques complètes à 23°C
  5. Alliage 15CDV6 (DIN 1.7734) : Haute Résistance, Tenacité & Soudabilité Aisée
  6. DIN 1.7734 5 – Alliage 15CDV6 : Haute Résistance, Tenacité & Soudabilité Aisée
  7. Alliage 15CDV6 (DIN 1.7734) – Haute Résistance, Soudage Facile, Tenacité Supérieure
  8. Alliage PtNi10 : Propriétés Mécaniques & Thermiques Complètes
  9. Alliage PtIr10 Platine-Iridium : Matériau Haute Résistance & Haute Température