当我收到关于它的更改的通知时,我需要使用 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());