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);
}