Evénements, indexeurs et propriétés C# 2.0

PowerAMC représente les événements, indexeurs et propriétés C# sous la forme d'attributs UML standard avec des propriétés supplémentaires.

Pour plus d'informations sur la création et l'utilisation des attributs, voir Attributs (MOO).

Création d'un événement, d'un indexeur ou d'une propriété

Pour créer événement, un indexeur ou une propriété, affichez la feuille de propriétés d'un type, cliquez sur l'onglet Attributs, cliquez sur le bouton Ajouter en bas de l'onglet, puis sélectionnez l'option appropriée.

Ces objets sont créés comme suit :
  • Evénements – stéréotype <<Event>> avec une ou plusieurs opérations liées représentant les gestionnaires add et/ou remove

  • Indexeurs – stéréotype <<Indexer>> avec une ou plusieurs opérations liées représentant les accesseurs get et/ou set

  • Propriétés – stéréotype <<Property>> avec une ou plusieurs opérations liées représentant les accesseurs get et/ou set. En outre, vous devez noter que :
    • La visibilité de la propriété est définie par l'opération de l'accesseur get si elle existe, dans le cas contraire par celle de l'accesseur set.

    • Lorsqu'un attribut devient une propriété, un attribut de mise en oeuvre est automatiquement créé pour stocker la valeur de la propriété. L'attribut de réalisation n'est pas persistant et a une visibilité private. Il a le stéréotype <<PropertyImplementation>> et porte le même nom que la propriété, mais commence par une minuscule. Si le nom de la propriété commence déjà par un caractère minuscule, son premier caractère sera converti en majuscule.

    • L'attribut de réalisation peut être retiré pour les propriétés qui n'en n'ont pas l'usage (propriétés calculées, par exemple

    • Si l'attribut étendu booléen Extern est défini à true, aucune opération ne doit être liée à cette propriété

    • Lorsqu'une déclaration de propriété inclut un modificateur Extern, la propriété est dite propriété externe. Une déclaration de propriété externe ne fournit aucune réalisation concrète, chacune de ses déclarations d'accesseur consiste alors en un point-virgule

Propriétés d'événement, d'indexeur et de propriété

Les feuilles de propriétés d'événement, d'indexeur et de propriété contiennent tous les onglets d'une feuille de propriétés d'attribut standard, avec en plus un onglet C#, dont les propriétés sont répertoriées ci-dessous :

Propriété

Description

Unité de compilation

Spécifie l'unité de compilation dans laquelle l'attribut sera stocké. Disponible uniquement si le type parent est un type partiel (alloué à plusieurs unités de compilation).

New

Spécifie le modificateur new pour la déclaration de l'attribut.

Unsafe

Spécifie le modificateur unsafe pour la déclaration de l'attribut.

Abstract

Spécifie le modificateur abstract pour la déclaration de l'attribut.

Extern

Spécifie le modificateur extern pour la déclaration de l'attribut.

Override

Spécifie le modificateur override pour la déclaration de l'attribut.

Sealed

Spécifie le modificateur sealed pour la déclaration de l'attribut.

Virtual

Spécifie le modificateur virtual pour la déclaration de l'attribut.

Exemple d'événement

L'exemple suivant montre la classe Button, qui contient trois événements :



Exemple de propriété

Dans l'exemple suivant, la classe Employee contient deux 2 propriétés. L'opération Setter a été supprimée de la propriété TimeReport :



{
 public class Employee
 {
  private int _Function;
  private int _TimeReport;
  // Property Function
  private int Function
  {
   get
   {
     return _Function;
    }
   set
   {
     if (this._Function != value)
      this._Function = value;
    }
  }
  // Property TimeReport
  private int TimeReport
  {
   get
   {
     return _TimeReport;
    }
  }
 }

Exemple d'indexeur

Dans l'exemple suivant, la classe Person contient l'attribut indexeur Item. Le paramètres est utilisé pour trier la propriété est String Name :



public class Person
{
 private Hashtable _childAges;
 // Indexer Item
 private int this[String name]
 {
  get
  {
   return (int)_ChildAges[name];
  }
  set
  {
    _ChildAges[name] = value;
  }
 }
}
Person someone;
someone ["Alice"] = 3;
someone ["Elvis"] = 5;