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からIEnumerableへの変換
- 2. ストリームのリスナーをIObservableに変換する
- 3. 変換IEnumerableを
- 4. コンバータマッピングプロパティでienumerableをリストに変換する方法
- 5. IEnumerable <JToken>をJArrayに変換する方法
- 6. IEnumerableをバイト配列に変換する方法
- 7. リストにIEnumerableを変換する
- 8. IEnumerableをIEnumerableに変換する<T>
- 9. IObservable <double>の値を変更する方法は?
- 10. IObservable <IObservable <T>>をIObservable <IEnumerable <T>>にするにはどうすればよいですか?
- 11. IEnumerableとIObservableの違いは何ですか?
- 12. List <IEnumerable <ProductViewModel >>を<IEnumerable <ProductViewModel >>に変換する方法は?
- 13. IEnumerableをListまたはIEnumerableに変換したい
- 14. IEnumerable <Task<T>>をIObservableに変換してください。<T>
- 15. IQueryableからIEnumerableに変換する
- 16. IEnumerable <IGrouping <int、DataRow >>をDataTableに変換する方法?
- 17. IEnumerable <CustomType>を一覧に変換し、グループ化ロジックを適用し、IEnumerableに変換する方法<CustomType>?
- 18. 別のIObservableが公開されるまで、IObservableにサブスクライブしてデータをバッファリングする方法は?
- 19. `IEnumerable <Unknown T>`を `IEnumerable <Whatever>`にキャストする方法
- 20. IObservableを別のIObservableに非同期で依存させる簡単な方法はありますか?
- 21. コールバックコールをIEnumerableに変換する可能性があります
- 22. <T>をIObservableにする方法<T>
- 23. IEnumerable <string>をコンマ区切り文字列に変換する方法はありますか?
- 24. IEnumerable <AnonymousType>をリスト<T>に変換する方法はありますか
- 25. OpenXMLを使用してIEnumerableからStringに変換する
- 26. DataTableをIEnumerableに変換する<T>(ASP.NET Core 2.0)
- 27. IEnumerable <foo>のリストをリストに変換する<string>
- 28. IEnumerableからListへの変換
- 29. Linqのディクショナリ<int、Dictionary <int, Foo>>をIEnumerable <IEnumerable <Foo>>に変換する最も簡単な方法は?
- 30. Linq ObjectQuery IQueryableをIEnumerableに変換します。
なぜあなたは 'ToObservable()'を使いたくないのですか? –
@DanielHilgarth私は、私も興味があります - それはTo Observable()のポイントです – JerKimball