OVH Cloud OVH Cloud

delegate dans une interface?

2 réponses
Avatar
julien
Bonjour
J'aimerais ajouter une déclaration pour un delegate dans une interface:

interface X
{
[...]

delegate void EventHandlerTest(object sender, System.EventArgs e);

}

Evidemment, ça ne plait pas au compilateur. Ce delegate ne va en effet
pas être overriden par la classe utilisant cette interface.

Comment faire cela?

Merci
Julien

2 réponses

Avatar
Patrick Philippot
Bonjour,

interface X
{
[...]

delegate void EventHandlerTest(object sender, System.EventArgs e);

}



Evidemment, ça ne plait pas au compilateur.



Et pour cause. Dans une interface on ne déclare ni types, ni données. On
déclare des signatures. Et n'oubliez pas que la déclaration d'un
delegate est équivalente à la déclaration d'une classe. Un delegate
*est* une classe représentant un "smart pointer" vers une fonction d'un
type particulier. Ou dit autrement, un delegate est un pointeur de
fonction fortement typé.

Déclarez votre delegate dans votre namespace en dehors de l'interface
et déclarez un event du type correspondant dans l'interface:

delegate void TestEventHandler(object sender, TestEventArgs e);

interface IMonInterface
{
event TestEventHandler Test;
}

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
julien
Patrick Philippot wrote:
Déclarez votre delegate dans votre namespace en dehors de l'interface
et déclarez un event du type correspondant dans l'interface:

delegate void TestEventHandler(object sender, TestEventArgs e);

interface IMonInterface
{
event TestEventHandler Test;
}




Merci beaucoup