当我收到关于它的更改的通知时,我需要使用 Rx 检索先前由序列生成的所有对象以及新对象的方法。我认为这并不常见,因为大多数系统只需要未处理的条目,但我的情况需要整套新旧值才能工作。
有可能以某种方式实现这一目标吗?我找不到任何类似的例子,而且似乎没有任何方法可以做到这一点。
当我收到关于它的更改的通知时,我需要使用 Rx 检索先前由序列生成的所有对象以及新对象的方法。我认为这并不常见,因为大多数系统只需要未处理的条目,但我的情况需要整套新旧值才能工作。
有可能以某种方式实现这一目标吗?我找不到任何类似的例子,而且似乎没有任何方法可以做到这一点。
您可以为此使用Scan
扩展方法。
IObservable<T> source = ...;
IObservable<List<T>> history = source
.Scan(new List<T>(), (list, item) => { list.Add(item); return list; });
如果source
发出标记A
, B
, C
,
则分别history
发出标记[A]
, 。[A B]
[A, B, C]
如果您不希望所有发出history
的值都相同List<T>
,您可以稍微修改对以下的调用Scan
:
IObservable<List<T>> history = source
.Scan(new List<T>(), (list, item) => list.Concat(new[]{ item }).ToList());