IObservable <T> и INotifyPropertyChanged - есть ли соединение

Я думаю, что вы хотите

find . -cmin +60 -exec ls -al {} \;

. В нем будут перечислены все файлы в текущем каталоге, созданные более 60 минут назад.

«+» в «+60» означает более 60 минут назад, в то время как «-» в «-60» означает менее 60 минут назад.

12
задан stop-cran 31 December 2018 в 07:12
поделиться

5 ответов

Я соглашаюсь с micahtan's и NathanAW ответы. Я хочу, просто подводят итог и добавляют. В строгом смысле нет никакого прямого подключения beetwen IObservable и INotifyPropertyChanged. Rx абстрагирован от конкретного события: это - платформа для обработки любых типов событий. RX обрабатывает все типы событий таким же образом, и все специфические особенности находятся только в пользовательском коде. Если Вы хотите извлечь пользу точно из INotifyPropertyChanged, и INotifyCollectionChanged в Вашем WPF (Xamarin, Blazor) expearence смотрят на моем библиотека ObservableComputations. Эта библиотека является готовым к производству аналогом Связываемого Linq, Непрерывного Linq, библиотек Optics что рекомендуемый NathanAW. Этими библиотеками можно пользоваться самими или сотрудничали с Rx. В этом с тех пор существует соединение beetwen Rx и INotifyPropertyChanged, но снова, то же соединение существует beetwen Rx и любое другое событие.

-1
ответ дан 2 December 2019 в 22:22
поделиться

Вот еще один, который появился, поскольку этот вопрос был дан ответом, плагин под названием SudoEdit, который предоставляет функции sudoread и sudowrite, что по умолчанию по умолчанию старается использовать Sudo Sudo и SU, если это не удается: http: // www. vim.org/scripts/script.php?script_id=2709

-121-2-580271-

Это может быть касательным, но я использую тег Crow Control's $ Meading, чтобы поднять версию в моем экране. Каждый раз, когда я что-то проверяю, CC делает обновление и выплескивает сборку. Один из шагов в моем скрипте Ant вводит значение маркировки $ из системы Cruise Control в значение в пределах строк .xml. Это дает мне новый номер версии с каждым коммитным. Я могу проверить журналы CC и сопоставить номер сборки до номера ревизии SVN.

, вероятно, больше работы, чем вы заинтересованы в том, чтобы делать что-то это просто. Я также старую, что любая другая система сборки будет иметь аналогичную особенность.

-121--3375326-

Если не поддерживает убежище и привязки WPF также IOBServable , он не поможет держать UI UI, обновляемый с изменениями в модели. Причина, по которой вы можете использовать inotifyPropertyChanged , заключается в том, что код привязки в WinForms и WPF ищет этот интерфейс, и при внедрении используются его событие, чтобы держать UI актуально.

3
ответ дан 2 December 2019 в 22:22
поделиться

Насколько я могу судить, никакой связи нет. События Observers / .NET - это два способа достижения стиля поведения Observer / Notification.

Ответ Microsoft заключался в том, чтобы построить на основе шаблона событий .NET, а не отказываться от него в пользу вручную зарегистрированных объектов Observer.

Одна из моих самых больших неприятностей, связанных с событиями, - это невозможность очистить цепочку делегатов по требованию, что приводит к довольно большому количеству сценариев утечки управляемой памяти. С этой целью Microsoft представила концепцию слабых событий, то есть для решения проблемы несоответствия сроков для Observables / Observers.

Подробнее о шаблоне WeakEvent можно прочитать здесь .

Джош Смит выпустил внедрение WeakEventManager для INotifyPropertyChanged здесь . Это обеспечивает более безопасный (с точки зрения памяти) способ подключения объектов, которые изменяют свойства, и их наблюдателей.

5
ответ дан 2 December 2019 в 22:22
поделиться

Если вы имеете в виду IObserver/IObservable как определено в расширениях Rx:

http://channel9.msdn.com/shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010/

и:

http://themechanicalbride.blogspot.com/2009/07/introducing-rx-linq-to-events.html

Тогда это как яблоки и апельсины.

INotifyPropertyChanged просто предоставляет общий крючок событий для привязки к базе данных/etc, чтобы дать элементам управления знать, когда обновить их связанные значения.

IObservable/IObserver - это скорее "запрос с помощью последовательностей событий", но даже это плохое описание.

Хм... хорошо, вы знаете, как можно поместить материал в "мешок", называемый коллекцией, а затем запросить эту коллекцию (вручную или с помощью оператора LINQ), чтобы извлечь значения, верно? Это похоже на это, но вместо того, чтобы "вытаскивать" данные из "мешка", вы получаете события, которые вам "подталкивают".

Бессовестная вставка, которая может помочь или еще больше запутать: http://blog.lab49.com/archives/3252

1
ответ дан 2 December 2019 в 22:22
поделиться

Во-первых, я немного новичок в Rx, поэтому прислушивайтесь к моим комментариям.

Тем не менее, я думаю, что есть отличная возможность для сотрудничества между INotifyPropertyChanged и IObservable Rx. Я думаю, что относительно очевидно, что на данный момент пользовательский интерфейс построен на основе INPC. Однако INPC также является основным способом обнаружения изменений и управления сценариями, в которых модель предметной области или модель представления имеют взаимозависимости между объектами и свойствами. Именно эти взаимозависимости кажутся хорошими кандидатами на Rx.

Работа с INPC напрямую немного сложна и несколько болезненна. Множество волшебных ниточек, с которыми нужно иметь дело. Также немного болезненно наблюдать за событием на объекте, находящемся на нескольких уровнях в дереве объектов.

Но если я смогу смоделировать эти взаимодействия «реактивно», то мои модели представления и модели предметной области начнут казаться немного более элегантными.Это проявляется в элегантности таких проектов, как Bindable Linq , Continuous Linq , Obtics и т. Д. Эти библиотеки упрощают создание «живых значений» или » живые коллекции », которые обновляются автоматически (смею сказать« реактивно ») на изменения. Непрерывный Linq даже имеет структуру «реактивных объектов» для выполнения реактивного программирования, хотя и без Rx.

Мне кажется, что синергия будет достигнута, если мы сможем использовать Rx для сохранения целостности модели и представления модели. Затем мы можем заставить «привязываемую поверхность» модели модель / представление учитывать INPC, продолжая поднимать PropertyChanged по мере необходимости. Я видел пару элегантных методов расширения , которые создают наблюдаемое из INotifyPropertyChanged. Похоже, что другая половина этого может заключаться в создании некоторой инфраструктуры, которая преобразуется с Rx обратно в INPC.

2
ответ дан 2 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: