Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 MediatR vs Reactive?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4450
Есть старое развесистое WinForms приложение, надо сделать в нем что-то типа: в форме Settings изменили установки и другие формы, в которых эти установки используются отреагировали. Оставим пока невозможность всегда реагировать без рестарта и т.д., предположим всегда можно.

Хотел использовать Reactive , но подумал, что можно MediatR notifications.
Подскажите, возможно ли использовать MediatR notifications, будет ли это проще?
17 ноя 21, 14:13    [22396992]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6257
Ролг Хупин
Хотел использовать Reactive , но подумал, что можно MediatR notifications.

Хочется чего-то стильного-модного-молодежного? INotifyPropertyChanged (который автоматом имплементится теми же стандартными настройками) уже не?
17 ноя 21, 17:49    [22397135]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4450
Сон Веры Павловны
Ролг Хупин
Хотел использовать Reactive , но подумал, что можно MediatR notifications.

Хочется чего-то стильного-модного-молодежного? INotifyPropertyChanged (который автоматом имплементится теми же стандартными настройками) уже не?



я первый раз в большом городе(ц), совсем не хочется с-м-м, но хочется чего-то, с помощью чего можно на изменение в одной форме (проперти) отреагировать в другой форме. Как это сделать ? при помощи чего?
17 ноя 21, 18:29    [22397154]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
vb_sub
Member

Откуда:
Сообщений: 983
Ролг Хупин,
чем обычные события не устраивают?
17 ноя 21, 22:00    [22397219]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6257
Ролг Хупин
с помощью чего можно на изменение в одной форме (проперти) отреагировать в другой форме. Как это сделать ? при помощи чего?

Так выше ж написано - стандартный интерфейс INotifyPropertyChanged. Вполне позволяет реагировать на изменения и без рестарта. Стандартные настройки .Net (те, которые в .settings-файлах, которые унаследованные от ApplicationSettingsBase) автоматически из коробки реализуют этот интерфейс, и всё, что нужно - подписаться на событие PropertyChanged от этого интерфейса. Или использовать DataBinding - в винформс он тоже вполне есть (конечно, до WPF-ных бинднигов ему как до луны пешком, но пользоваться вполне можно, причем и в двунаправленном режиме тоже, и даже конвертеры поддерживаются). В этом случае подписка на событие делается автоматически внутренними механизмами биндинга (не знаю, как в винформс, а в WPF при этом делается weak event subscription, т.е. можно даже не заморачиваться с вопросом отписки для корректного захоронения подписанного объекта).

P.S. В тексте по данной выше ссылке не описан нюанс: если у экземпляра PropertyChangedEventArgs свойство PropertyName=null или string.Empty, то это означает, что изменились все обозреваемые свойства класса.
18 ноя 21, 06:53    [22397276]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
Sergey Ch
Member

Откуда: Благовещенск
Сообщений: 8894
vb_sub
Ролг Хупин,
чем обычные события не устраивают?

+1

Просто создаёте event и подписываете на него "другие формы".
Работает быстро, дёшево и сердито.

Good luck!
18 ноя 21, 10:49    [22397327]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4450
Сон Веры Павловны
Ролг Хупин
с помощью чего можно на изменение в одной форме (проперти) отреагировать в другой форме. Как это сделать ? при помощи чего?

Так выше ж написано - стандартный интерфейс INotifyPropertyChanged. Вполне позволяет реагировать на изменения и без рестарта. Стандартные настройки .Net (те, которые в .settings-файлах, которые унаследованные от ApplicationSettingsBase) автоматически из коробки реализуют этот интерфейс, и всё, что нужно - подписаться на событие PropertyChanged от этого интерфейса. Или использовать DataBinding - в винформс он тоже вполне есть (конечно, до WPF-ных бинднигов ему как до луны пешком, но пользоваться вполне можно, причем и в двунаправленном режиме тоже, и даже конвертеры поддерживаются). В этом случае подписка на событие делается автоматически внутренними механизмами биндинга (не знаю, как в винформс, а в WPF при этом делается weak event subscription, т.е. можно даже не заморачиваться с вопросом отписки для корректного захоронения подписанного объекта).

P.S. В тексте по данной выше ссылке не описан нюанс: если у экземпляра PropertyChangedEventArgs свойство PropertyName=null или string.Empty, то это означает, что изменились все обозреваемые свойства класса.


Хорошо, а если это самописные установки? WPF там и рядом не валялось, там совсем legacy ВинФормс приложение.
Т.е. читается, скажем, хмл файл, десериализуется, показывается в пропертигиде, юзер меняет какие-то его части, они сохраняются (сериализуются) в хмл файл обратно.
Или в друом случае - в форме отмечается безобидная птичка, на которую над изменить реакцию в других формах, строгая злая птица там.
В этих случаях как реагировать?
18 ноя 21, 11:17    [22397342]     Ответить | Цитировать Сообщить модератору
 Re: MediatR vs Reactive?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6257
Ролг Хупин
Хорошо, а если это самописные установки?

Ну а какая разница, самописные, или нет. Получаете доступ к инстансу класса настроек любым доступным образом в зависимости от реализации - мож он у вас синглтон, может, через DI впихивается, или задается явным параметром в каком-нибудь методе или конструкторе. Подписываетесь на его событие PropertyChanged. В хэндлере события производите нужные вам действия. Что тут может быть проблемой - не понимаю.
Пример, как производится реализация INotifyPropertyChanged, дан выше, хотя вариантов таких реализаций очень много (можно, например, вообще ко всем public свойствам автоматом прикрутить возбуждение PropertyChanged с помощью Fody.PropertyChanged).
18 ноя 21, 12:28    [22397408]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить