rxjava programming c# .net system.reactive reactive-programming

c# - programming - system reactive dll download



C#.NET Rx- ¿Dónde está System.Reactive? (2)

Tengo un fondo intensivo de Java, así que perdóname si estoy pasando por alto algo obvio en C #, pero mi investigación no me lleva a ninguna parte. Estoy tratando de usar la biblioteca reactiva Rx .NET. El compilador no se queja del IObservable pero sí con la llamada al método zip . Está lanzando el "... ¿falta una directiva de uso o una referencia de ensamblaje?"

He estado revisando los espacios de nombres y no puedo encontrar lo que está buscando. No puedo encontrar el System.Reactive que también arroja un error si se usa, y todas las referencias ya están incluidas para esta aplicación de Windows 8.1. ¿Puede alguien, por favor, darme una pista sobre lo que está mal?

public sealed class EventEngine { private static readonly EventEngine singleton = new EventEngine(); public static EventEngine get() { return singleton; } public IObservable<MusicNote> CurrentKey { get; set; } public IObservable<Scale> CurrentScale { get; set; } public IObservable<AppliedScale> CurrentAppliedScale { get { return CurrentScale.zip(CurrentKey, (s, k) => AppliedScale.getAppliedScale(k, s)); } } private EventEngine() {} }

* ACTUALIZACIÓN *

Aquí está la versión de trabajo después de considerar la entrada de respuestas.

public sealed class EventEngine { private static readonly EventEngine singleton = new EventEngine(); public static EventEngine get() { return singleton; } public IObservable<MusicNote> CurrentKey { get; set; } public IObservable<Scale> CurrentScale { get; set; } public IObservable<AppliedScale> CurrentAppliedScale { get { return Observable.Zip(CurrentScale, CurrentKey, (s, k) => AppliedScale.getAppliedScale(s,k)); } } private EventEngine() {} }


A partir de la versión 3, el proyecto Rx ahora se conoce como System.Reactive porque "pone la denominación del paquete NuGet en línea con las directrices de NuGet y también el espacio de nombres dominante en cada paquete".

Puede descargarse de NuGet buscando "System.Reactive" o puede descargarlo aquí: https://www.nuget.org/packages/System.Reactive/

Aquí está la página de GitHub del proyecto: https://github.com/Reactive-Extensions/Rx.NET

Asignaciones de paquetes

  • Rx-Main System.Reactive
  • Rx-Core System.Reactive.Core
  • Rx-Interfaces System.Reactive.Interfaces
  • Rx-Linq System.Reactive.Linq
  • Rx-PlatformServices System.Reactive.PlatformServices
  • Rx-Testing Microsoft.Reactive.Testing

https://github.com/Reactive-Extensions/Rx.NET


Probablemente no haya agregado las referencias de ensamblaje necesarias para Rx a su proyecto . (¡Hacer referencia a un ensamblaje no es lo mismo que importar un espacio de nombres! Ya sabe lo que es un espacio de nombres; un ensamblaje es algo similar a un JAR; la unidad más pequeña de implementación / distribución de código. Su proyecto debe hacer referencia a él antes de los espacios de nombres definidos en el interior estará disponible para su uso.)

Es probable que el compilador no se queje de IObservable<T> e IObserver<T> porque su proyecto está dirigido a .NET Framework versión 4 o posterior. Estas dos interfaces han sido parte del núcleo .NET Framework Class Library (FCL) desde .NET versión 4. (Si seleccionó una versión anterior de .NET, también obtendría errores por usar estas interfaces no definidas).

Todas las partes de Rx que no sean estas dos interfaces no están incluidas en el núcleo .NET FCL, pero residen en sus propios ensamblados (complementarios). Puede agregarlos a su proyecto, por ejemplo, instalando los paquetes de NuGet correspondientes:

  1. En Visual Studio, vaya a HerramientasNuGet Package ManagerPackage Manager Console .

  2. En la ventana de la consola de NuGet, seleccione el proyecto de destino (donde desea usar Rx) en la lista desplegable Proyecto predeterminado .

  3. A continuación, escriba Install-Package System.Reactive y Install-Package System.Reactive Enter ↵ . (Nota: este paquete solía llamarse Rx-Main anteriormente; consulte esta respuesta para obtener más información).

  4. Esto agregará las referencias de ensamblado System.Reactive.* su proyecto.