Vous modélisez un indexeur C# en utilisant un attribut étendu avec le stéréotype <<Indexer>>. Un autre attribut ayant le stéréotype <<IndexerImplementation>> est automatiquement créé, il s'affiche avec un trait de soulignement dans la liste des attributs. Les opérations getter et setter correspondantes sont également automatiquement créées.
Vous pouvez supprimer l'attribut de mise en oeuvre.
Si vous supprimez à la fois les opérations getter et setter, l'attribut n'a plus le stéréotype <<Indexer>>.
Lorsque vous définissez un attribut <<Indexer>>, le caractère modifiable ou non et les opérations getter/setter sont intimement liés comme indiqué dans le tableau suivant :
Opérations |
Caractère modifiable de l'attribut Indexer |
---|---|
Si vous conservez les opérations getter et setter |
Indexer est Modifiable |
Si vous supprimez l'opération setter d'une propriété modifiable |
Indexer devient Lecture seule |
Si vous supprimez l'opération getter d'une propriété modifiable |
Indexer devient Lecture seule |
D'un autre côté, si vous changez le caractère modifiable ou non de l'indexeur, les opérations refléteront ce changement, par exemple si vous transformez un indexeur modifiable en indexeur en lecture seule, l'opération setter est automatiquement supprimée.
Dans l'exemple suivant, la classe Person contient un attribut <<Indexer>> Item. Le paramètre 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;
Le tableau suivant répertorie les différents modificateurs d'indexeur pris en charge dans PowerAMC :
Modificateur de propriété C# |
Equivalent PowerAMC |
---|---|
New |
Attribut étendu New défini à True |
Usafe |
Attribut étendu Usafe défini à True |
Virtual |
Attribut étendu Virtual défini à True |
Override |
Attribut étendu Override défini à True |
Extern |
Attribut étendu Extern défini à True |
Abstract |
Attribut étendu Abstract défini à True |
Sealed |
Attribut étendu Sealed défini à True |