簡體   English   中英

Observable(Rx)用於存儲庫中對象的連續(異步)流

[英]Observable (Rx) for a continuous (async) stream of objects in repository

我有一個類型為ItemRepository我的目標是讓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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM