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

C# - Attributs

Un attribut est une balise déclarative utilisée pour transmettre des informations à l'exécution sur les comportements de divers éléments tels que les classes, les méthodes, les structures, les énumérateurs, les assemblages, etc. dans votre programme. Vous pouvez ajouter des informations déclaratives à un programme en utilisant un attribut. Une balise déclarative est représentée par des crochets ([ ]) placés au-dessus de l'élément pour lequel elle est utilisée.

Les attributs sont utilisés pour ajouter des métadonnées, telles que les instructions du compilateur et d'autres informations telles que les commentaires, la description, les méthodes et les classes à un programme. Le .Net Framework fournit deux types d'attributs :les pré-définis attributs et création personnalisée attributs.

Spécifier un attribut

La syntaxe pour spécifier un attribut est la suivante −

[attribute(positional_parameters, name_parameter = value, ...)]
element

Le nom de l'attribut et ses valeurs sont spécifiés entre crochets, avant l'élément auquel l'attribut est appliqué. Les paramètres de position spécifient les informations essentielles et les paramètres de nom spécifient les informations facultatives.

Attributs prédéfinis

Le .Net Framework fournit trois attributs prédéfinis −

Utilisation des attributs

L'attribut prédéfini AttributeUsage décrit comment une classe d'attributs personnalisés peut être utilisée. Il précise les types d'éléments auxquels l'attribut peut être appliqué.

La syntaxe pour spécifier cet attribut est la suivante −

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

Où,

Par exemple,

[AttributeUsage(
   AttributeTargets.Class |
   AttributeTargets.Constructor |
   AttributeTargets.Field |
   AttributeTargets.Method |
   AttributeTargets.Property, 
   AllowMultiple = true)]

Conditionnel

Cet attribut prédéfini marque une méthode conditionnelle dont l'exécution dépend d'un identifiant de prétraitement spécifié.

Il provoque la compilation conditionnelle des appels de méthode, en fonction de la valeur spécifiée telle que Debug ou Tracer . Par exemple, il affiche les valeurs des variables lors du débogage d'un code.

La syntaxe pour spécifier cet attribut est la suivante −

[Conditional(
   conditionalSymbol
)]

Par exemple,

[Conditional("DEBUG")]

L'exemple suivant illustre l'attribut −

Démo en direct
#define DEBUG
using System;
using System.Diagnostics;

public class Myclass {
   [Conditional("DEBUG")]
   
   public static void Message(string msg) {
      Console.WriteLine(msg);
   }
}
class Test {
   static void function1() {
      Myclass.Message("In Function 1.");
      function2();
   }
   static void function2() {
      Myclass.Message("In Function 2.");
   }
   public static void Main() {
      Myclass.Message("In Main function.");
      function1();
      Console.ReadKey();
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

In Main function
In Function 1
In Function 2

Obsolète

Cet attribut prédéfini marque une entité de programme qui ne doit pas être utilisée. Il vous permet d'informer le compilateur de supprimer un élément cible particulier. Par exemple, lorsqu'une nouvelle méthode est utilisée dans une classe et si vous souhaitez toujours conserver l'ancienne méthode dans la classe, vous pouvez la marquer comme obsolète en affichant un message indiquant que la nouvelle méthode doit être utilisée, au lieu de l'ancienne méthode.

La syntaxe pour spécifier cet attribut est la suivante −

[Obsolete (
   message
)]

[Obsolete (
   message,
   iserror
)]

Où,

Le programme suivant le démontre −

using System;

public class MyClass {
   [Obsolete("Don't use OldMethod, use NewMethod instead", true)]
   
   static void OldMethod() {
      Console.WriteLine("It is the old method");
   }
   static void NewMethod() {
      Console.WriteLine("It is the new method"); 
   }
   public static void Main() {
      OldMethod();
   }
}

Lorsque vous essayez de compiler le programme, le compilateur affiche un message d'erreur indiquant −

 Don't use OldMethod, use NewMethod instead

Création d'attributs personnalisés

Le .Net Framework permet la création d'attributs personnalisés qui peuvent être utilisés pour stocker des informations déclaratives et peuvent être récupérés au moment de l'exécution. Ces informations peuvent être liées à n'importe quel élément cible en fonction des critères de conception et des besoins de l'application.

La création et l'utilisation d'attributs personnalisés impliquent quatre étapes −

La dernière étape consiste à écrire un programme simple pour lire les métadonnées afin de trouver diverses notations. Les métadonnées sont des données sur des données ou des informations utilisées pour décrire d'autres données. Ce programme doit utiliser des réflexions pour accéder aux attributs lors de l'exécution. Nous en discuterons dans le chapitre suivant.

Déclarer un attribut personnalisé

Un nouvel attribut personnalisé doit être dérivé de System.Attribute classer. Par exemple,

//a custom attribute BugFix to be assigned to a class and its members
[AttributeUsage(
   AttributeTargets.Class |
   AttributeTargets.Constructor |
   AttributeTargets.Field |
   AttributeTargets.Method |
   AttributeTargets.Property,
   AllowMultiple = true)]

public class DeBugInfo : System.Attribute

Dans le code précédent, nous avons déclaré un attribut personnalisé nommé DeBugInfo .

Construire l'attribut personnalisé

Construisons un attribut personnalisé nommé DeBugInfo , qui stocke les informations obtenues en déboguant n'importe quel programme. Laissez-le stocker les informations suivantes −

Le DeBugInfo La classe a trois propriétés privées pour stocker les trois premières informations et une propriété publique pour stocker le message. Par conséquent, le numéro de bogue, le nom du développeur et la date de révision sont les paramètres positionnels de la classe DeBugInfo et le message est un paramètre facultatif ou nommé.

Chaque attribut doit avoir au moins un constructeur. Les paramètres de position doivent être transmis via le constructeur. Le code suivant montre le DeBugInfo classe −

//a custom attribute BugFix to be assigned to a class and its members
[AttributeUsage(
   AttributeTargets.Class |
   AttributeTargets.Constructor |
   AttributeTargets.Field |
   AttributeTargets.Method |
   AttributeTargets.Property,
   AllowMultiple = true)]

public class DeBugInfo : System.Attribute {
   private int bugNo;
   private string developer;
   private string lastReview;
   public string message;
   
   public DeBugInfo(int bg, string dev, string d) {
      this.bugNo = bg;
      this.developer = dev;
      this.lastReview = d;
   }
   public int BugNo {
      get {
         return bugNo;
      }
   }
   public string Developer {
      get {
         return developer;
      }
   }
   public string LastReview {
      get {
         return lastReview;
      }
   }
   public string Message {
      get {
         return message;
      }
      set {
         message = value;
      }
   }
}

Application de l'attribut personnalisé

L'attribut est appliqué en le plaçant juste avant sa cible −

[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")]
[DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")]
class Rectangle {
   //member variables
   protected double length;
   protected double width;
   public Rectangle(double l, double w) {
      length = l;
      width = w;
   }
   [DeBugInfo(55, "Zara Ali", "19/10/2012", Message = "Return type mismatch")]
   
   public double GetArea() {
      return length * width;
   }
   [DeBugInfo(56, "Zara Ali", "19/10/2012")]
   
   public void Display() {
      Console.WriteLine("Length: {0}", length);
      Console.WriteLine("Width: {0}", width);
      Console.WriteLine("Area: {0}", GetArea());
   }
}

Dans le chapitre suivant, nous récupérons les informations d'attribut à l'aide d'un objet de classe Reflection.


Langue C

  1. Java 8 - Classe facultative
  2. C# – Nullables
  3. Ferro-Titanit® Cromoni
  4. AgCu20
  5. DIN 1.7734 4
  6. DIN 1.7734 5
  7. DIN 1.7734 6
  8. PtNi10
  9. PtIr10