2011-12-28 81 views
3

流我有型的RepositoryItem我的目標是讓Repository提供Observable或用觀察到的Item基本上是「流」。觀察,(Rx)的一個連續(異步)對象的存儲庫

我是一個關於RX的完整初學者,但認爲我對基礎知識有了很好的把握。我的問題一直在尋找一種方法來保持Observable的生命,並且在它們進來時手動將Item推送給它(這可能是套接字或基於異步的其他任何東西)。基本上是一個熱點Observable。

我得到它的工作使用Subject<Item>我訂閱,但我錯過了「常規可觀察」,即LINQ查詢過濾流的力量。我害怕我忽略了一些東西,或者看着一個合適的方法。

對於像我這樣的初學者的任何洞察力或方向將不勝感激。

回答

2

您可能錯過了using System.Reactive.Linq參考,否則選擇等。人。應顯示在Subject<T>上。

+0

我對他的問題的理解是,他有它工作了'Subject',而不是'IObservable'。 – sblom 2011-12-29 00:10:43

+0

就是這樣。我很難過,爲什麼我在主題上沒有LINQ操作員,更沒有找到我的問題的解決方案。謝謝。 – ndsc 2011-12-29 00:14:22

1

http://rxwiki.wikidot.com/101samples#toc47

使類原生的IObservable

如果您要構建新的系統,你可以考慮使用只是 的IObservable。

使用主題作爲後端爲的IObservable

class UseSubject 
{ 
    public class Order 
    {    
     private DateTime? _paidDate; 

     private readonly Subject<Order> _paidSubj = new Subject<Order>(); 
     public IObservable<Order> Paid { get { return _paidSubj.AsObservable(); } } 

     public void MarkPaid(DateTime paidDate) 
     { 
      _paidDate = paidDate;     
      _paidSubj.OnNext(this); // Raise PAID event 
     } 
    } 

    private static void Main() 
    { 
     var order = new Order(); 
     order.Paid.Subscribe(_ => Console.WriteLine("Paid")); // Subscribe 

     order.MarkPaid(DateTime.Now); 
    } 
} 
相關問題