我正在寻找一种通过特定逻辑的项目的方法。最明显的答案可能是使用 .Select ,它适用于大多数情况,但我有一个特殊情况,这个问题实际上可以改写为在所有订阅者消费项目后如何调用某个方法?
我正在考虑一个看起来像这样的扩展PassThrough(this IObservable<TSource> obj, Action<TSource, IObserver<TResult>> selector)
,我会以下列方式使用它
.PassThrough((source, observer) => {
if(source != null) {
using(var result = new Result(source)) {
observer.OnNext(result);
}
}
});
其中最重要的部分是在对象传递给 OnNext 之后调用 .Dispose 对结果对象,换句话说,在它被订阅者消费之后。我没有找到这样的扩展方法。有人可以举例说明如何使用现有的 Rx.NET API 来实现它,或者假设它是可能的,如何创建一个可以做到这一点的扩展?