繁体   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