Chaque fois que je définis mes propres événements, jutilise un modèle tel que celui-ci (que je pense est ce que recommande MSDN le faire):
public class MyEventClass { private bool _value; // Backing variable public bool Value { get { return _value; } set { if (value != _value) // Only raise event if value is changed/different { _value = value; OnValueChanged(EventArgs.Empty); } } } public event EventHandler ValueChanged; // Anything can subscribe to the event protected void OnValueChanged(EventArgs e) // Only this and children can invoke event { if (ValueChanged != null) ValueChanged(this, e); } }
Ainsi, le code client a juste besoin de sabonner à lévénement et cela fonctionne automatiquement.
Cependant, il semble fastidieux de passer le paramètre EventArgs e
, en particulier avec une classe qui utilise EventHandler pour déclencher ses événements, car la base EventArgs ne contient aucune donnée, seulement EventArgs.Empty
.
Serait-il considéré comme un faux pas de le changer en ceci?
protected void OnValueChanged() { if (ValueChanged != null) ValueChanged(this, EventArgs.Empty); }
Commentaires
Réponse
Est-ce que cest faux? Non. Cela va-t-il amener les gens à se plaindre de votre code? Non.
Cela détournera-t-il un développeur occupé pendant quelques minutes pendant quil essaie de découvrir quels sont les paramètres et sils aideront à résoudre son problème? Cela pourrait être …
Cela rendra-t-il votre classe plus facile à utiliser …?
Les standards et les modèles sont utiles car ils sont facilement reconnus et utilisés (ou ignorés). Sécarter des conventions doit être fait dans un but précis, pas seulement parce que vous le pouvez. Cela sapplique quil sagisse de style crochet, de noms de paramètres ou de liste darguments. Faites-le pour une raison, pas seulement parce quil compile.
PropertyChangedEventArgs
et un-Handler
, et passer comme argument le nom de la propriété? Ou est-ce juste un mauvais exemple?