tutorial the example eventos event delegate custom and c# event-handling

the - En C#, ¿cómo declara una subclase de EventHandler en una interfaz?



raise event c# (2)

¿Cuál es la sintaxis del código para declarar una subclase de EventHandler (que usted ha definido) en una interfaz?

Creo la subclase EventHandler MyEventHandler, por ejemplo, en la declaración de delegado, pero no se puede declarar un delegado en una interfaz ...

Cuando le pido a Visual Studio que extraiga una interfaz, se refiere a EventHandler en IMyClassName como MyClassName.MyEventHandler que obviamente hace estragos con el acoplamiento de tipos.

Supongo que hay una forma sencilla de hacer esto. ¿Tengo que declarar explícitamente mi controlador de eventos en un archivo separado?


Bueno, necesitas definir los argumentos y posiblemente delegar en algún lugar. No necesita un segundo archivo, pero probablemente lo recomendaría ... pero las clases probablemente no deberían estar anidadas , si ese era el problema original.

La recomendación es usar el patrón estándar de "remitente, argumentos"; hay dos enfoques cmmon:

1: declare una clase de evento-args por separado, y use EventHandler<T> en la interfaz:

public class MySpecialEventArgs : EventArgs {...} ... EventHandler<MySpecialEventArgs> MyEvent;

2: declarar una clase de evento-args y delegar por separado:

public class MySpecialEventArgs : EventArgs {...} public delegate void MySpecialEventHandler(object sender, MySpecialEventArgs args); .... event MySpecialEventHandler MyEvent;


Suponiendo C # 2.0 o posterior ...

public class MyEventArgs: EventArgs { // ... your event args properties and methods here... } public interface IMyInterface { event EventHandler<MyEventArgs> MyEvent; }