為 IObservable 實作您自己的運算子
您可以為 LINQ 程式庫未提供的作業新增運算子,或建立您自己的標準查詢運算子實作以改善可讀性和效能,藉此擴充 Rx。 當您想要使用記憶體內建物件操作,以及當預期的自訂不需要查詢的完整檢視時,撰寫標準 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 運算子,即可利用在 Rx 程式庫中實作的現有效能或例外狀況處理功能。
撰寫自訂運算子時,最好不要保留任何未使用的可處置專案;否則,您可能會發現資源實際上可能會流失,且取消可能無法正常運作。
自訂現有的運算子
將新的運算子新增至 LINQ 是擴充其功能的方法。 不過,您也可以將現有運算子包裝成更特製化且有意義的運算子,以改善程式碼可讀性。