Есть ли какой-либо способ создать «push» IObservable?

#c# #wpf #reactiveui

Вопрос:

У ReactiveUI есть множество различных способов создания IObservable s из существующих источников, таких как другой IObservable , an IEnumerable , an event и т. Д. , Но, насколько я могу судить, у него нет никакого способа на самом деле создать его, что, по вашему мнению, должно быть самым простым возможным случаем!

Кажется очевидным , что должен быть встроенный способ создания объекта, который реализует IObservable<T> , с помощью какого-то SetNewValue(T value) метода, который вы можете вызвать, чтобы передать новое значение всем подписчикам. Но я не вижу этого ни в документации, ни в Intellisense.

Я знаю , что с этим можно было бы справиться Observable.FromEvent , но это похоже на взлом. Я не ищу event ; я ищу объект. Я что-то упускаю? Существует ли это, и я просто не знаю, что искать, или FromEvent обходной путь-лучшее, что я могу найти?

Ответ №1:

Это называется Предметом (или объектом публикации в реализации Rx на других языках), и он делает именно то, что вы описываете!

Комментарии:

1. Глядя на Subject класс, не кажется , что есть какой-либо способ создать его, не имея уже ни одного IObservable и ни одного IObserver , ни другого ISubject . То, что я ищу, — это отправная точка, которая не зависит от каких-либо ранее существовавших наблюдаемых объектов.

2. вы можете создать тему и просто отправить текст docs.microsoft.com/en-us/previous-versions/dotnet/…

3. @кенни Ах, я смотрел на Subject класс. Не видел, что там тоже был Subject<T> класс. Это полезно, спасибо!

4. Также есть Наблюдаемое. Создать