9
votes

C # Question d'action / de style délégué

Qu'est-ce qui est considéré comme meilleur style pour une définition d'événement: xxx pré>

ou p>

public delegate void DNumberChanged(object sender, double number);
public event DNumberChanged OnNumberChanged;


2 commentaires

Comme mentionné ci-dessous, l'utilisation d'EventHandler est la meilleure pour la clarté. Pour ce que sa valeur, je maintiens une bibliothèque hébergée sur CodePlex qui vous permettra de convertir les utilisations de EventHandler en action et inversement. Voir JOGT.CODEPLEX.COM/WIKI/VIEW.ASPX?title=Jolt .Fonctions pour plus d'informations.


@Brad Bruce, il ne se réfère pas à la séquence de réponse, mais une troisième technique différente de ses 2 idées d'origine. J'ai réaffiche la question et j'ai légèrement plus clair la réponse.


5 Réponses :


11
votes

Ne créez pas de nouveau type si vous n'êtes pas obligé. Je pense que c'est mieux:

public event Action<object, double> OnNumberChanged;


0 commentaires

0
votes

Je pense que l'option 1 est meilleure si je devais choisir, mais IIRC, les directives officielles pour les événements indiquent que votre deuxième paramètre doit être une classe avec le nom xxxeventargs Evenargs dans sa chaîne d'héritage.


1 commentaires

Oui, tu as raison. Ils conseillent également que vous ne démarrez pas l'événement avec le nom "ON", mais vous réservez ceci pour la méthode protégée utilisée pour élever votre événement.



16
votes

Ni 1 ou 2. Une troisième option est le gagnant

public event EventHandler<NumberChangedEventArgs> NumberChanged;


1 commentaires

+1 Pour les directives de style référence. J'aimerais simplement ajouter que Custom Eventargs peut ne pas être nécessaire pour l'événement de notification de changement de propriété, car le changement aurait dû être reflété par la propriété de l'expéditeur déjà.



1
votes

Comme pour toutes les questions sur le style de codage. Choisissez celui que vous préférez, ou que votre équipe préfère et gardez cela cohérent tout au long du projet. Tant que tous ceux qui ont besoin de le lire efficacement, tout ira bien.


0 commentaires

2
votes

Généralement, je tiens à utiliser une classe dérivée éventuelle comme argument. Il rend le code beaucoup plus cohérent.

J'ai une classe: xxx

et un gestionnaire: xxx

La déclaration est la suivante: xxx


0 commentaires