Rx 中的 IObservable 和 ObservableExtensions 是什么关系?

What is the relationship between IObservable and ObservableExtensions in Rx?

我看了Reactive Extension的代码,然后找到这段代码

private readonly IObservable<TSource> _source;
protected override IDisposable Run(IObserver<TResult> observer, IDisposable cancel, Action<IDisposable> setSink)
{
    var sink = new _(this, observer, cancel);
    setSink(sink);
    return _source.SubscribeSafe(sink);
}

我发现方法 SubscribeSafe(sink) 在 class ObservableExtensions 中,而 class 没有实现接口 IObservable。为什么参数_source有成员函数SubscribeSafe()?

因为ObservableExtensions中的方法是扩展方法。 你可以阅读它们 here.