2009-09-09 11 views
6

Simplemente uno rápido: ¿qué piensa la gente sobre el uso de delegados de acción para eventos de clase pública frente a la definición de los propios tipos de delegados de eventos? Sé que muchos usan Acciones para delegados "menores" como en los métodos de extensión lamdas y .ForEach(), etc., pero para los miembros reales del evento de clase, ¿está utilizando Actions una buena idea? ¿Cuál es la "mejor práctica" en esta área?C#: delegado de acción frente a delegado explícito

Gracias

+0

http://izlooite.blogspot.com/2011/02/delegates-vs-methods.html –

Respuesta

11

lugar de la acción, que utilizan EventHandler<TEventArgs> de las manifestaciones de eventos. Elimina la necesidad de definir mi propio tipo de delegado. También tiene el beneficio adicional de forzar que el tipo de datos se derive de System.EventArgs y, por lo tanto, se desempeña muy bien con los patrones de eventos .Net.

+1

Pero te obliga a completar una implementación de TEventArgs, incluso si solo quieres devolver un valor ... Habiendo dicho cuál, a [ScalarEventArgs donde T: struct] sería suficiente. – Benjol

+0

Se ajusta al modelo de eventos .NET realmente vale la pena el esfuerzo de crear una clase de contenedor que hereda de System.EventArgs? ¿Qué estoy realmente perdiendo al no conformarme a este modelo? – MrLane

+3

Una cosa que puede suceder es que si luego necesita devolver información adicional con su evento, todo lo que tiene que hacer es agregarlo a su clase EventArgs. Donde, como si regresara, diga Acción , siempre tiene que devolver una cadena pase lo que pase, y si la cambia, romperá todo el código que la usa. –