Perdóname si esta es una pregunta estúpida, admito que no he pensado demasiado.Cuándo utilizar devoluciones de llamada en lugar de eventos en C#?
¿Cuándo preferiría usar una devolución de llamada (es decir, pasar un Func o una acción), en lugar de exponer y usar un evento?
ACTUALIZACIÓN
¿Qué motivó a esta pregunta fue el siguiente problema:
tengo una clase ThingsHandler, que se puede asociar con un ThingEditor. El ThingsHandler maneja una lista de cosas, conoce su orden, cuál es el 'actual', cuando se añaden o eliminan los nuevos etc.
Los ThingEditors solo puede modificar una sola cosa.
El ThingsHandler necesita para alertar la ThingEditor cuando el usuario selecciona una cosa nueva para editar, y la ThingEditor necesita para alertar al ThingsHandler cuando el usuario dice 'Hecho'.
Lo que me molesta es que estas dos clases tengan referencias entre sí, aunque supongo que es inevitable, o vinculantes para los eventos en ambas direcciones. Me preguntaba si usar una devolución de llamada en una dirección era 'más limpio'.
Sospecho que hay un patrón de diseño para esto, y humildemente me disculpo por mi ignorancia (y pereza).
Maldición, estás haciendo que mi cerebro duela otra vez :) En mi código actual, las clases están tan alejadas de todo en el mundo real, no estoy seguro de dónde comenzaría ... (ver la pregunta actualizada) – Benjol
Buena respuesta, y para resumir: los eventos son notificaciones (dieron a luz), las devoluciones de llamada son solicitudes (comer alimentos). Relacionando esto con el mundo real y obtienes un diagrama de caso de uso con la jirafa como el objeto, y el usuario como el manejador de animales (o un niño con palomitas arrojándolo a través de las barras) – Codesleuth
No solo es difícil de digerir, sino también difícil de digerir traducir ... ¡Finalmente vale la pena! Gracias Eric. –