Domanda

Le interfacce

IObservable < T > e IObserver < T > sono inserite direttamente nello spazio dei nomi System in .NET Framework 4.0 Beta2. Perché non in System.Collections.Generic , come IEnumerable < T > ?

P.S. L'anteprima di Reactive Framework da Silverlight Toolkit contiene IObserver < T > nello spazio dei nomi System.Collections.Generic .

È stato utile?

Soluzione

Ciò che descrivono le nuove interfacce IObservable / IObserver è un'astrazione molto superiore rispetto alle sole raccolte che possono essere viste come un caso speciale di calcoli (ecco perché gli elenchi in Haskell sono monadi). Quindi è ovvio che tale generalizzazione è collocata nello spazio dei nomi di sistema.

Dai un'occhiata a questo brillante cast di Erik Meijer dove descrive le idee alla base delle interfacce.

Altri suggerimenti

IObservable è un'interfaccia che identifica una classe che implementa il modello Observer . Non è legato alle collezioni. È più legato al fornire un'alternativa agli eventi.

Anche se questa è una vecchia domanda su cui mi sono imbattuto, volevo solo appoggiare la valutazione di @ ControlFlow del "dualismo" tra IObservable e IEnumerable come una raccolta "Pushed based" vs "Pull based" con un link a "Rx di Erik Meijer in 15 minuti ", dove può essere citato dicendo esattamente questo. http://channel9.msdn.com/posts / Charles / Erik-Meijer-Rx-in-15-Minutes /

Di conseguenza, questa raccolta basata su spinte può fondamentalmente spostare il paradigma di base di "una serie banale di eventi chiamati" in una raccolta di prima classe asincrona selezionabile, selezionabile, interrogabile, passabile e abbonabile. Qualcosa che fa ciò che appartiene allo spazio dei nomi BCL principale o forse merita il suo, ma è troppo oltre la raccolta di Yet-Another per condividere il suo spazio dei nomi. Intendiamoci, questa è solo la mia opinione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top