Dre*_*rsh 5 naming-conventions system.reactive
因此,如果我正在为另一个库中的类型编写扩展方法,将该类型转换为Rx IObservable<T>,那么约定究竟是什么?我问,因为我认为AsObservable是要走的路,但我也看到了ToObservable.我不清楚在何时或是否有任何真正的惯例时使用哪个.
难道是ToObservable被保留用于车削东西预计产品单一事件到IObservable<T>为其中AsObservable保留用于转换的东西,预计将产生的一系列事件到IObervable<T>?
除非你有充分的理由编写自己的交叉对偶运算符,否则在处理Enumerables和Observables时你不需要编写"To"后缀.
请注意以下事实:
ToObservable期望将基于拉的序列转换为基于推的序列.ToEnumerable期望将基于推的序列转换为基于拉的序列.AsObservable预计将基于推送的类型包装为IObservable< T >.AsEnumerable预计将基于拉的类型包装为IEnumerable< T >.因此,To当您编写一个切换源的二元性的方法As时应该使用,并且应该在结果二元性与源的相同时使用.
在大多数情况下,您将使用As自己的方法,因为已经为您编写ToObservable并且ToEnumerable已经为您编写了交叉对偶运算符.
来源:个人经验,MSDN文档(上图),Erik Meijer本人.
我不知道任何官方指导,但我会使用的主要指标是查看你正在做的工作量.对于大多数情况,有一些非常重要的工作(这本身就是主观的),例如将IEnumerable转换为IObservable,我会使用ToObservable.当该方法做了相当简单的工作时,与Observable.AsObservable扩展方法一样,AsObservable似乎是更好的选择.这两种方法之间的另一个显着区别是,AsObservable它不仅仅是一个类型转换,并且不会对参数的行为进行任何实际更改,而是Observable.ToObservable(IEnumerable<T>)返回具有显着不同语义的对象.