Question

Les interfaces

IObservable < T > et IObserver < T > sont placées directement dans l'espace de noms System dans .NET Framework 4.0 Beta2. Pourquoi pas dans System.Collections.Generic , comme IEnumerable < T > ?

p.s. L'aperçu de Reactive Framework de Silverlight Toolkit contient IObserver < T > dans l'espace de noms System.Collections.Generic .

Était-ce utile?

La solution

Les nouvelles interfaces IObservable / IObserver décrivent une abstraction bien supérieure à celle de collections, qui peut être considérée comme un cas particulier de calculs (c’est pourquoi les listes dans Haskell sont des monades). Il est donc évident que cette généralisation est placée dans l’espace de noms System.

Consultez ce brillant casting de Erik Meijer où il décrit les idées derrière les interfaces.

Autres conseils

IObservable est une interface qui identifie une classe qui implémente le modèle Observer . Ce n'est pas lié aux collections. Il s’agit plutôt de fournir une alternative aux événements.

Bien que c’est une vieille question sur laquelle j’ai trébuché, je voulais simplement appuyer l’évaluation du «dualisme» de @ ControlFlow sur IObservable et IEnumerable en tant que collection «basée sur Pushed» contre «Pull» avec un lien vers la «Réaction» d’Erik Meijer. dans 15 minutes, où il peut être cité comme ayant dit exactement cela. http://channel9.msdn.com/posts / Charles / Erik-Meijer-Rx en 15 minutes /

Par conséquent, cette collection basée sur la diffusion forcée peut fondamentalement transformer le paradigme de base d’une "série d'événements appelés" en une collection asynchrone, sélectionnable, interrogeable, passable et pouvant être souscrite. Quelque chose qui appartient à l’espace de noms principal BCL ou mérite peut-être le sien, mais qui dépasse de loin la collection Yet-Another-Collection pour partager son espace de noms. Remarquez, c'est juste mon avis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top