2011-12-28 118 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); 
    } 
} 
相关问题