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
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:
En Visual Studio, vaya a Herramientas → NuGet Package Manager → Package Manager Console .
En la ventana de la consola de NuGet, seleccione el proyecto de destino (donde desea usar Rx) en la lista desplegable Proyecto predeterminado .
A continuación, escriba
Install-Package System.Reactive
yInstall-Package System.Reactive
Enter ↵ . (Nota: este paquete solía llamarseRx-Main
anteriormente; consulte esta respuesta para obtener más información).Esto agregará las referencias de ensamblado
System.Reactive.*
su proyecto.