Estoy bastante convencido de que esto no es posible, pero voy a preguntar de todos modos.Suscripción de evento de un solo disparo
Con el fin de realizar una suscripción de un solo tiro a eventos, con frecuencia me encuentro con este patrón (auto-inventado):
EventHandler handler=null;
handler = (sender, e) =>
{
SomeEvent -= handler;
Initialize();
};
SomeEvent += handler;
Es un buen montón de caldera de la placa, y también hace que ReSharper Whinge sobre cierres modificados. ¿Hay alguna manera de convertir este patrón en un método de extensión o similar? Una mejor manera de hacerlo?
Idealmente, me gustaría algo así como:
SomeEvent.OneShot(handler)
No veo ninguna razón por la cual no pueda poner el código repetitivo en un método de extensión. ¿O no tengo la pregunta? – Achim
¿Cómo se aprueba el evento para cancelar la suscripción? ¿Tiene un tipo de base común? No es un delegado un tipo de valor (es decir, si pasa el evento de alguna manera, se trata de una copia) – spender
@spender: Todos los delegados son tipos de referencia. –