Pergunta

interfaces de

IObservable<T> e IObserver<T> são colocados diretamente no namespace System no .NET Framework 4.0 Beta2. Por que não em System.Collections.Generic, como IEnumerable<T>?

P.S. visualização reativa Framework do Silverlight Toolkit contém IObserver<T> no namespace System.Collections.Generic.

Foi útil?

Solução

A coisa que as interfaces nova IObservable / IObserver descrever é uma abstração muito maior do que apenas a coleções que pode ser visto como um caso especial de cálculos (por isso listas em Haskell são mônadas). Portanto, é óbvio que tal generalização é colocada para namespace System.

Dê uma olhada em este elenco brilhante de Erik Meijer, onde ele descreve as idéias por trás das interfaces.

Outras dicas

IObservable é uma interface que identifica uma classe que implementa a Observer padrão . A sua não ligadas à cobrança. É mais relacionado ao fornecimento de uma alternativa para eventos.

Embora esta seja uma questão antiga eu tropecei em cima, eu só queria voltar @ avaliação do ControlFlow do 'dualismo' entre IObservable e IEnumerable como um vs 'baseado Pull' coleção 'empurrado com base' com um link para Rx Erik Meijer de' em 15 Minutos, onde ele pode ser citado como dizendo exatamente isso. http://channel9.msdn.com/posts / Charles / Erik-Meijer-Rx-in-15-Minutes /

Por isso, esta coleção baseada em empurrada pode mudar fundamentalmente o paradigma básico de 'uma série mundano dos chamados eventos' em um assíncrono, selecionável, consulta-able, passável e inscrever-capazes coleção de primeira classe de acionável declarativa. Algo que faz isso pertence ao namespace BCL núcleo ou talvez merece o seu próprio, mas é muito além Yet-Outra-coleção para compartilhar seu espaço para nome. Mente-lhe, isso é apenas a minha opinião.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top