私は集中的なJavaバックグラウンドを持っているので、C#で明らかなものを見落とすことは許してくれますが、私の研究はどこにも行きません。リアクティブRx .NETライブラリを使用しようとしています。 IObservable
について文句を言っているわけではありませんが、Zip
メソッドを呼び出しています。「... usingディレクティブまたはAssembly参照がありませんか?」
名前空間を調べてきましたが、探しているものが見つかりません。使用するとエラーをスローするSystem.Reactive
が見つかりません。また、このWindows 8.1アプリにはすべての参照が既に含まれています。誰かが私に何が間違っているのかを教えてくれますか?
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() {}
}
* UPDATE *
回答からの入力を考慮した後の作業バージョンは次のとおりです。
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() {}
}
おそらく、Rxに必要なアセンブリ参照をプロジェクトに追加していないでしょう。 (アセンブリの参照はnot名前空間のインポートと同じです!名前空間とは何か知っています;アセンブリはJARに似たものです;コードの展開/配布の最小単位です。プロジェクトは内部で定義された名前空間が使用可能になる前に参照してください。)
プロジェクトが.NET Frameworkバージョン4以降を対象にしているため、コンパイラはIObservable<T>
およびIObserver<T>
について文句を言わない可能性があります。これらの2つのインターフェイスは、.NETバージョン4以降のコア.NET Frameworkクラスライブラリ(FCL)の一部でした。(以前の.NETバージョンを対象とした場合、これらの未定義のインターフェースを使用してもエラーが発生します。)
これら2つのインターフェイス以外のRxのすべての部分は、notコア.NET FCLに含まれていますが、独自の(アドオン)アセンブリに含まれています。それらをプロジェクトに追加できます。対応する NuGetパッケージ をインストールすることにより:
Visual Studioで、ツール→NuGetパッケージマネージャー→パッケージマネージャーコンソールに移動します。
NuGetコンソールウィンドウで、ドロップダウンリストでターゲットプロジェクト(Rxを使用する場所)を選択しますデフォルトプロジェクト。
次に、Install-Package System.Reactive
と入力してヒットします Enter ↵。 (注:以前、このパッケージはRx-Main
と呼ばれていました。詳細については この回答 を参照してください。)
これにより、System.Reactive.*
アセンブリ参照がプロジェクトに追加されます。
バージョン3では、Rx
プロジェクトはSystem.Reactive
「NuGetのガイドラインに沿ったNuGetパッケージの命名と、各パッケージの主要な名前空間をもたらす」ため。
「System.Reactive」を検索してNuGetからダウンロードするか、ここからダウンロードできます。 https://www.nuget.org/packages/System.Reactive/
プロジェクトのGitHubページは次のとおりです。 https://github.com/Reactive-Extensions/Rx.NET
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