我正在尝试在一个类中设置一个可观察对象,该类将在每次事件触发成员时打勾。
public class FooService
{
private BarProvider _barProvider;
public IObservable<BarChangedEventArgs> BarChanged { get; }
public FooService()
{
BarChanged =
Observable
.FromEventPattern<BarChangedHandler, BarChangedEventArgs>(
h => _barProvider.Changed += h,
h => _barProvider.Changed -= h)
.Select(p => p.EventArgs);
}
public void OccursSomeTimeAfterFooServiceCreation
(
Func<BarProvider> barProviderFactory
)
{
_barProvider = barProviderFactory();
}
}
我认为我需要做的是在 OccursLater 方法中分配 _barProvider 的新值后设置可观察的事件处理程序,因为这是一个新的事件源。但是,我相信在消费者可能已经订阅之后,稍后设置 BarChanged 会破坏那些现有的订阅。
我希望 FooService 的消费者能够在任何时候订阅 BarChanged,并将 observable 视为一个事件参数流,无论在创建订阅后调用 OccursSomeTimeAfterFooServiceCreation 多少次。