Rx ToObservable()とToEnumerable()メソッドを使用せずに、IEnumerableコレクションをIOBservableのコレクションに変換しようとしています。 IEnumerableをIObservableに変換する方法は?
答えて
簡易回答 - 使用ToObservable
。それがそれのためのものです。答えは "実際の質問に答える"
- あなたはObservable.Create
経由Subjects
の使用を避けることができます。
void Main()
{
var src = Enumerable.Range(0, 10);
var observable = Observable.Create<int>(obs =>
{
foreach(var item in src)
{
obs.OnNext(item);
}
return Disposable.Create(()=>{});
});
using(observable.Subscribe(Console.WriteLine))
{
Console.ReadLine();
}
}
は出力:
0
1
2
3
4
5
6
7
8
9
'Disposable.Create(()=> {});は' Disposable.Empty'と異なりますか? – interlude
@interludeそうではなく、単に過負荷を使用したので、必要に応じてクリーンアップロジックを追加できます。 – JerKimball
1は、未知のタイプのIEnumerable
を持っている場合は、二つの方法1があります「IObservableに変換できます」:
オブジェクト内のすべてのデータを、
IObservable
を実装する新しいコレクションにコピーします。これが完了すると、新しいコレクションに加えられた変更だけが報告されます。オリジナルの変更は反映されません。IEnumerable
の内容のスナップショットを定期的に取得する新しいオブジェクトを作成します。各スナップショットを作成した後、以前のスナップショットに加えられたすべての変更を報告して、新しいスナップショットと一致させる必要があります。このアプローチを使用すると、最終的に元のオブジェクトに加えられた変更が観察されますが、何も変更されていないときにコレクションを繰り返し読み込む時間を無駄にすることなく、タイムリーな更新通知を提供することは困難です。
1はIObservable
がオリジナルIEnumerable
オブジェクトにではなく、データのコピーを予め充填されている新しいオブジェクトにバインド持っている必要があるときに、いくつかの時間があります。そのような場合には、第2のアプローチが必要であるかもしれない。ただし、元のコレクションが任意のIEnumerable
で利用できない機能をサポートしていない限り、受け入れられないシステムローディングを引き起こすことなく適時の更新を提供するのに十分なほどポーリングレートを速くすることはできません。さらに、IEnumerable
のタイプに要件を課さない場合、スレッドコンテキストが更新される可能性のあるスレッドコンテキストに制限を加える必要があります。
- 1. ストリームのリスナーをIObservableに変換する
- 2. リストにIEnumerableを変換する
- 3. IEnumerableをIEnumerableに変換する<T>
- 4. IEnumerable <Task<T>>をIObservableに変換してください。<T>
- 5. IEnumerableとIObservableの違いは何ですか?
- 6. 別のIObservableが公開されるまで、IObservableにサブスクライブしてデータをバッファリングする方法は?
- 7. IObservableを別のIObservableに非同期で依存させる簡単な方法はありますか?
- 8. コールバックコールをIEnumerableに変換する可能性があります
- 9. IEnumerable <string>をコンマ区切り文字列に変換する方法はありますか?
- 10. <T>をIObservableにする方法<T>
- 11. IEnumerableからListへの変換
- 12. IEnumerable <dynamic>をDataTableに変換します。
- 13. Linq ObjectQuery IQueryableをIEnumerableに変換します。
- 14. Linqのディクショナリ<int、Dictionary <int, Foo>>をIEnumerable <IEnumerable <Foo>>に変換する最も簡単な方法は?
- 15. IEnumerableで暗黙的に型を変換することはできません
- 16. IEnumerableを使用する方法
- 17. Web APIからIObservableを取得する方法
- 18. LINQでIEnumerableからHashSetへの変換を最適化する
- 19. バックグラウンドでmp3をflvに変換する方法:変換エラー
- 20. サブストーリーをカスタムに変換する方法
- 21. アクティビティをイメージに変換する方法
- 22. IQueryableをDataTableに変換する方法
- 23. int []をuint8 []に変換する方法
- 24. イメージをスライドショーに変換する方法
- 25. void *をCStringに変換する方法
- 26. シングルチャートをダブルに変換する方法
- 27. org.jdom.DocumentをStringに変換する方法
- 28. パッケージをユニットに変換する方法
- 29. PDFをHTMLConversionに変換する方法
- 30. NSUUIDをNSDataに変換する方法
なぜあなたは 'ToObservable()'を使いたくないのですか? –
@DanielHilgarth私は、私も興味があります - それはTo Observable()のポイントです – JerKimball