【发布时间】:2017-03-28 14:18:08
【问题描述】:
我想获取IdStream 的最新值并在命令Execute 操作中使用它。
public IObservable<Option<Guid>> IdStream { get; }
IdStream = documentStream.OfType<DocumentOpened().Select(x => x.Document.Id.Some())
.Merge(documentStream.OfType<DocumentClosed().Select(x => Option<Guid>.None()));
var saveCommand = ReactiveCommand.Create(() => Save(id), CanExecute);
我曾尝试使用答案 https://stackoverflow.com/a/31168822/7779560 并得到这样的结果:
var saveCommand = ReactiveCommand.Create(() => { }, CanExecute);
saveCommand.WithLatestFrom(IdStream, (_, id) => id)
.Subscribe(id => Save(id));
它可以工作,但在这种情况下我不能使用 IsExecuting 和 ThrownExceptions 命令的功能(它们仅适用于我在命令创建期间作为 Execute 传递的空操作)。
更新:
执行顺序:
-
IdStream正在创建 - 命令创建
-
documentStream处理DocumentOpened事件(获取一些 Id 值 - 我检查过) -
saveCommand执行
我怎样才能实现它?
UPD 2:我还需要等待命令体内的方法(例如SaveAsync)。
【问题讨论】:
标签: c# .net reactive-programming observable reactiveui