[英]Observable (Rx) for a continuous (async) stream of objects in repository
我有一個類型為Item
的Repository
我的目標是讓Repository
使用Observable
提供一個Observable
或基本上是一個Item
的“流”。
我是RX的初學者,但我認為我已經掌握了基礎知識。 我的問題是找到一種方法來保持Observable
活着並在它們進入時手動將Item
推送到它(可能是套接字或其他任何基於異步的)。 基本上是一個熱的觀察者。
我使用了我訂閱的Subject<Item>
,但是我錯過了“常規Observable”的功能,即LINQ查詢來過濾流。 我擔心我會忽視某些東西或者看起來過着合適的方法。
像我這樣的初學者的任何見解或方向將受到高度贊賞。
請參閱http://rxwiki.wikidot.com/101samples#toc47
使您的類本機為IObservable
如果您要構建新系統,可以考慮僅使用IObservable。
使用Subject作為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); } }
你可能錯過了using System.Reactive.Linq
引用,否則選擇了et。 人。 應該出現在Subject<T>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.