5

では、型を Rx に変換する別のライブラリの型の拡張メソッドを作成している場合、IObservable<T>正確にはどのような慣例なのでしょうか? AsObservable行くべき道だと思ったので質問しますが、私も見ToObservableました。実際の慣習がある場合、または実際の慣習がある場合にどちらが使用されるかは、私にはわかりません。

一連のイベントを生成すると予想されるものを に変換するために予約されているのと同じようToObservableに、単一のイベントを生成すると予想されるものを に変換するために予約されているのでしょうか?IObservable<T>AsObservableIObervable<T>

4

2 に答える 2

6

独自の交差双対性演算子を作成する十分な理由がない限り、Enumerable と Observable を処理するときに「To」接尾辞を記述する必要はありません。

次の真理を観察してください。

  • ToObservableプルベースのシーケンスをプッシュベースのシーケンスに変換することが期待されています。
  • ToEnumerableプッシュベースのシーケンスをプルベースのシーケンスに変換することが期待されています。
  • AsObservableプッシュベースの型を としてラップすることが期待されていIObservable< T >ます。
  • AsEnumerableプルベースの型を としてラップすることが期待されていIEnumerable< T >ます。

したがって、Toソースの双対性を切り替えるメソッドを作成しているときに使用するAs必要があり、結果の双対性がソースのものと同じである場合に使用する必要があります。

ほとんどの場合、 と の交差双対演算子は既に作成されているため、独自のメソッドに使用しAsます。ToObservableToEnumerable

出典: 個人的な経験、MSDN ドキュメント (上記)、Erik Meijer 自身。

于 2013-08-18T21:42:29.427 に答える
5

公式のガイダンスについては知りませんが、私が使用する主な指標は、あなたが行っている作業量を見ることです. ほとんどの場合、IEnumerable を IObservable に変換するなど、かなりの量の作業が行われます (それ自体が主観的です) ToObservableObservable.AsObservable拡張メソッドのように、メソッドがかなり単純な作業を行う場合はAsObservable、より適切な選択と思われます。これら 2 つのメソッドのもう 1 つの注目すべき違いはAsObservable、型キャストに過ぎず、引数の動作に実際の変更を加えず、Observable.ToObservable(IEnumerable<T>)セマンティクスが大きく異なるオブジェクトを返すことです。

于 2013-08-17T01:52:01.490 に答える