Problème liè à l'ordre alphabétique des proriétés d'une classe
Bonjour,
J'ai créé une classe "Voiture" avec 2 propriétés "Demarree" et "Essence".
Je souhaite empêcher de démarrer la voiture s'il n'y a pas d'essence, et afficher un message d'avertissement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public class Voiture : UserControl
{
/// <summary>
/// Litres d'essence dans le réservoir
/// </summary>
public int Essence
{
get { return _Essence; }
set { _Essence = value; }
}
private int _Essence = 0;
/// <summary>
/// True si la voiture est démarrée
/// </summary>
public bool Demarree
{
get { return _Demarree; }
set
{
if (value && _Essence <= 0)
MessageBox.Show("Mettre d'abord de l'essence.");
else
_Demarree = value;
}
}
private bool _Demarree = false;
} |
Après avoir posé mon nouveau contrôle sur une fiche, je rentre 10 dans la propriété "Essence" et bascule à true la propriété "Demarree". Tout va bien.
Mais lorsque j'exécute ce programme, le message d'avertissement s'affiche.
Tout ça parce que VisualStudio enregistre les propriétés des contrôles dans l'ordre alphabètique.
Si l'on observe le code généré automatiquement dans "Form1.Designer.cs" on se rend compte que la valeur de la propriété "Demarree" est affectée avant celle de "Essence" qui vaut à ce moment là 0. :(
Code:
1 2 3 4 5 6 7 8 9 10
|
//
// voiture1
//
this.voiture1.Demarree = true;
this.voiture1.Essence = 50;
this.voiture1.Location = new System.Drawing.Point(37, 405);
this.voiture1.Name = "voiture1";
this.voiture1.Size = new System.Drawing.Size(150, 150);
this.voiture1.TabIndex = 6; |
Le problème ne se poserait plus si je renommais ma propriété en "ZDemarree" par exemple, ou si je pré-initialisais "Essence" avec une valeur positive.
Mais sur en exemple complexe avec des références d'objets à la place d'entiers et beaucoup de propriété cela devient un vrai casse-tête.
Quelqu'un aurait-il une technique pour modifier l'ordre d'affectation des propriétés par VisualStudio ?
D'avance merci. ;)