我有以下使用反应式扩展的代码片段:
let value : 't = ...
Observable.Create<'t>(fun observer ->
let subject = new BehaviorSubject<'t>(value)
let d0 = subject.Subscribe(observer)
let d1 = observable.Subscribe(subject)
new CompositeDisposable(d0, d1) :> IDisposable
)
这行得通。但是,如果我将向上转换为 IDisposable,则代码将无法编译,并引用模棱两可的重载。然而 CompositeDisposable 是一个 IDisposable。为什么类型推理引擎无法解决这个问题?请注意,我几乎一直在 C# 中使用此模式,从 Observable.Create 返回 CompositeDisposable,而无需向上转换。