Implementace vlastních operátorů pro IObservable
Rx můžete rozšířit přidáním nových operátorů pro operace, které nejsou poskytovány knihovnou LINQ, nebo vytvořením vlastní implementace standardních operátorů dotazů pro zlepšení čitelnosti a výkonu. Psaní přizpůsobené verze standardního operátoru LINQ je užitečné, když chcete pracovat s objekty v paměti a pokud zamýšlené přizpůsobení nevyžaduje komplexní zobrazení dotazu.
Vytvoření nových operátorů
LINQ nabízí úplnou sadu operátorů, které pokrývají většinu možných operací se sadou entit. K přidání konkrétního sémantického významu dotazu však můžete potřebovat operátor – zejména v případě, že stejný operátor můžete v kódu opakovaně použít.
Mnoho existujících operátorů LINQ je ve skutečnosti sestaveno pomocí jiných základních operátorů LINQ. Například operátor SelectMany se sestaví tak, že se sestaví operátory Select a Merge, jak ukazuje následující kód.
public static IObservable<TResult> SelectMany<TSource, TResult>( this IObservable<TSource> source, Func<TSource, IObservable<TResult>> selector)
{
return source.Select(selector).Merge();
}
In t
Když při vytváření nového operátoru znovu použijete stávající operátory LINQ, můžete využít stávající funkce výkonu nebo zpracování výjimek implementované v knihovnách Rx.
Při psaní vlastního operátoru je vhodné nenechávat žádné jednorázové nepoužité; Jinak můžete zjistit, že prostředky skutečně unikly a zrušení nemusí fungovat správně.
Přizpůsobení existujících operátorů
Přidání nových operátorů do LINQ je způsob, jak rozšířit jeho možnosti. Můžete ale také zlepšit čitelnost kódu tím, že stávající operátory zabalíte do specializovaných a smysluplnějších operátorů.