Je suis assez convaincu que ce n'est pas possible, mais je vais quand même demander.Abonnement à un seul événement
Afin de faire un abonnement unique coup à des événements, je me retrouve souvent en utilisant ce modèle (inventé l'auto-):
EventHandler handler=null;
handler = (sender, e) =>
{
SomeEvent -= handler;
Initialize();
};
SomeEvent += handler;
Il est tout à fait beaucoup de passe-partout, et il fait également ReSharper whinge sur les fermetures modifiées. Y at-il un moyen de transformer ce modèle en une méthode d'extension ou similaire? Une meilleure façon de le faire?
Idéalement, je voudrais quelque chose comme:
SomeEvent.OneShot(handler)
Je ne vois aucune raison pour laquelle vous ne pouvez pas mettre le code standard dans une méthode d'extension. Ou n'ai-je pas eu la question? – Achim
Comment passez-vous l'événement pour la désinscription? A-t-il un type de base commun? Un délégué n'est-il pas un type de valeur (c'est-à-dire si vous transmettez l'événement d'une manière ou d'une autre) – spender
@spender: Tous les délégués sont des types de référence. –