Compartir a través de


Implementación de sus propios operadores para IObservable

Para ampliar Rx, agregue nuevos operadores para las operaciones que no proporciona la biblioteca LINQ o cree su propia implementación de operadores de consulta estándar para mejorar la legibilidad y el rendimiento. Escribir una versión personalizada de un operador LINQ estándar es útil cuando desea trabajar con objetos en memoria y cuando la personalización prevista no requiere una vista completa de la consulta.

Crear operadores nuevos

LINQ ofrece un conjunto completo de operadores que cubren la mayoría de las operaciones posibles en un conjunto de entidades. Sin embargo, es posible que necesite un operador para agregar un significado semántico determinado a la consulta, especialmente si puede reutilizar ese mismo operador varias veces en el código.

Muchos operadores LINQ existentes están creados de hecho con otros operadores LINQ básicos. Por ejemplo, el operador SelectMany se compila mediante la redacción de los operadores Select y Merge, como se muestra en el código siguiente.

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

Al reutilizar los operadores LINQ existentes al compilar uno nuevo, puede aprovechar las funcionalidades de rendimiento o control de excepciones existentes implementadas en las bibliotecas rx.

Al escribir un operador personalizado, se recomienda no dejar descartables sin usar; de lo contrario, es posible que encuentre que los recursos podrían filtrarse y la cancelación puede que no funcione correctamente.

Personalización de operadores existentes

Agregar nuevos operadores a LINQ es una manera de ampliar sus funcionalidades. Sin embargo, también puede mejorar la legibilidad del código ajustando los operadores existentes en otros más especializados y significativos.