[我有一个IObservable<string>
,每当一个不同的Switch()
发出一个值时,它就会被IObservable
淘汰,就像这样:
IObservable<string> Invalidated => stateChanged
.Select(state => state.CanExecuteChanged.Select(x => _myString))
.Switch()
.StartWith(_myString);
在这里,stateChanged
是IObservable<State>
,CanExecuteChanged
是IObservable<bool>
。换句话说,每次状态更改时,我都会取消订阅state
的CanExecuteChanged
可观察对象,并订阅新状态提供的可观察对象。
问题出在StartWith
。我第一次订阅我不想发出值。但是,由于状态更改我确实希望发出一个值,每次Switch
运行。换句话说,在初始订阅Invalidated
时不应该发出任何值,但是在每个Switch
上因此我确实希望发出一个值。我可以实现吗?如果可以,如何实现?
State
定义为:
class State
{
public IObservable<bool> CanExecuteChanged =>
Observable.Interval(TimeSpan.FromSeconds(1)).Select(i => i % 2 == 0);
}