2009-09-18 3 views
1

Existe-t-il une interface de framework .NET comme celle-ci? Je peux bien sûr écrire le mien, mais je vais le réutiliser s'il existe déjà. Pourrait peut-être avoir une méthode Fire/Raise sur elle aussi.Existe-t-il une interface standard dans .NET contenant un seul EventHandler?

+2

Juste une question. Êtes-vous de Java? – Dykam

+0

non, juste fini par en avoir besoin pour forcer WPF, MVVM, les propriétés attachées et la liaison de données pour faire ce que je veux. –

Répondre

9

Non, il n'y en a pas.

Généralement, les événements en C#/CLR n'utilisent pas un modèle de base d'interface comme indiqué dans votre question. C'est beaucoup plus proche du style Java de l'événement. L'élément le plus proche serait un délégué d'événement générique qui peut être réutilisé au lieu de créer de nouveaux types de délégué. Cela existe dans System.EventHandler<TEventArgs>

+0

+1, vous avez raison, il semble très familier au style d'observateur de Java (mais en arrière) –

0

Non, il n'y a pas une telle interface standard dans le BCL ou toute autre bibliothèque de classes .NET, au moins autant que je sache.

0

Il n'y a pas de véritable correspondance dans le monde .NET. Puis-je vous suggérer, cependant, que vous regardez dans une implémentation du EventPool? Cela a la capacité de déclencher des événements, et les événements peuvent être décrits comme des énumérations (ou similaires).

2

Pas encore, mais il y aura dans .Net 4.0, IObservable<T> et IObserver<T> fait partie intégrante de la Reactive Framework, voir info sur Paul Batum blog.

Voici comment les interfaces sont dans leur incarnation actuelle:

interface IObservable<out T> 
{  
    IDisposable Subscribe(IObserver o); 
} 

interface IObserver<in T> 
{  
    void OnCompleted();  
    void OnNext(T v);  
    void OnError(Exception e); 
} 
+0

J'allais le mentionner. Très intéressant sera probablement aussi commun que IEnumerable assez tôt. –

Questions connexes