IObservable 用の独自の演算子の実装

RX を拡張するには、LINQ ライブラリで提供されていない操作に新しい演算子を追加するか、標準クエリ演算子の独自の実装を作成して読みやすさとパフォーマンスを向上させます。 標準 LINQ 演算子のカスタマイズされたバージョンを記述することは、メモリ内オブジェクトを操作する場合や、目的のカスタマイズでクエリの包括的なビューを必要としない場合に便利です。

新しい演算子の作成

LINQ には、一連のエンティティに対して可能なほとんどの操作をカバーする演算子の完全なセットが用意されています。 ただし、クエリに特定のセマンティックの意味を追加するために演算子が必要な場合があります。特に、その同じ演算子をコード内で複数回再利用できる場合です。

既存の LINQ 演算子の多くは、実際には他の基本的な LINQ 演算子を使用して構築されています。 たとえば、SelectMany 演算子は、次のコードに示すように Select 演算子と Merge 演算子を作成することによって構築されます。

public static IObservable<TResult> SelectMany<TSource, TResult>( this IObservable<TSource> source, Func<TSource, IObservable<TResult>> selector) 
{ 
   return source.Select(selector).Merge(); 
} 
In t

新しい LINQ 演算子をビルドするときに既存の LINQ 演算子を再利用することで、Rx ライブラリに実装されている既存のパフォーマンスまたは例外処理機能を利用できます。

カスタム演算子を記述する場合は、使い捨ての使用を省略することをお勧めします。そうしないと、リソースが実際にリークされ、取り消しが正しく機能しない可能性があります。

既存の演算子のカスタマイズ

LINQ に新しい演算子を追加することは、その機能を拡張する方法です。 ただし、既存の演算子をより特殊で意味のある演算子にラップすることで、コードの読みやすさを向上させることもできます。