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

  • Quest-ce que ça fait de mal dêtre là? Devrez-vous le rajouter plus tard lorsque vous aurez besoin de passer des arguments dévénement? Probablement …
  • Je ny ai pensé que comme une commodité pour mépargner quelques efforts lors de lécriture du cours. Mais vous ' avez tout à fait raison dans la mesure où cela pourrait changer plus tard (il a probablement gagné ' t, mais quand même …), et ce serait un changement radical, alors je peux aussi bien le faire du premier coup. Merci!
  • Dans ce cas particulier, nest pas ' plus normal dutiliser un PropertyChangedEventArgs et un -Handler, et passer comme argument le nom de la propriété? Ou est-ce juste un mauvais exemple?
  • Mon code est peut-être un mauvais exemple, mais je tirais ma conception et mes conventions de dénomination de quelques classes .NET, qui utilisent la nomenclature EventArgs et -Changed par défaut.

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *