Streaminsight - миграция на новые System.Reactive и System.Reactive.Providers. - PullRequest
0 голосов
/ 30 ноября 2018

Learning StreamInsight, используя в примере код, приведенный здесь в качестве примера для моего собственного приложения, я заметил, что в исходном примере используются очень старые версии System.Reactive и System.Reactive.Providers.

Несмотря на то, что у меня есть последние версии (от nuget) обеих этих сборок (rt версия v4.0.30319) в моем проекте, компилятор выдает ошибку (с application.DefineObservable и application.DefineEnumerable(() => HistoricData).ToPointStreamable, подчеркнутыми краснымVisual Studio 2017):

CS0012  The type 'IQbservable<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Reactive.Providers, Version=1.0.10621.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

в этом разделе кода.

Каков современный способ переписать этот код, чтобы он был совместим с последними версиями System.Reactive?

    static IQStreamable<TCQuote> CreateStream(Application application, bool isRealTime)
    {
        DateTime startTime = new DateTime(2011, 1, 1);

        if (isRealTime)
        {
            // Live data uses IQbservable<>
            return
                application.DefineObservable(() => SimulateLiveData()).ToPointStreamable(
                    r => PointEvent<SensorReading>.CreateInsert(startTime.AddSeconds(r.Time), r),
                    AdvanceTimeSettings.StrictlyIncreasingStartTime);
        }

        // Historic data uses IQueryable<>
        return
            application.DefineEnumerable(() => HistoricData).ToPointStreamable(
                r => PointEvent<SensorReading>.CreateInsert(startTime.AddSeconds(r.Time), r),
                AdvanceTimeSettings.StrictlyIncreasingStartTime);
    }
...