我收到编译错误,因为我不太清楚如何做到这一点:
public IObservable<X> Gather()
{
this.vizs = vizs;
return Observable.Create<X>(this.GetXObserver());
}
getXObserver
的位置:
private IDisposable GetQueryObserver(IObserver<X> observer)
{
//...
return System.Reactive.Disposables.Disposable.Empty;
}
如何设置我想在GetXObserver
方法上使用Observable.Create(...)
?
我想要的是避免创建如下代码:
Observable.Create<X>(
observer =>
{
//long code here
}
);
我想稍微清理一下。
答案 0 :(得分:2)
你可以这样做:
public IObservable<X> Gather()
{
return Observable.Create<X>((Func<IObserver<X>, IDisposable>)GetXObserver);
}
private IDisposable GetXObserver(IObserver<X> observer)
{
return System.Reactive.Disposables.Disposable.Empty;
}
但它开始使代码更长和脱节。这是一个糟糕的设计。
在我看来,以下是更清洁的:
public IObservable<X> Gather()
{
return Observable.Create<X>(o => System.Reactive.Disposables.Disposable.Empty);
}
那就是说,只要你回归System.Reactive.Disposables.Disposable.Empty
,你就会做错事。如果你能展示真实的代码,那就太好了。