Как правильно перебрать IObservableList <T>? - PullRequest
0 голосов
/ 25 октября 2019

Я работаю над приложением WPF, которое использует ReactiveUI и DynamicData. Большинство наших списков относятся к типу IObservableList, и иногда нам нужно подписаться на изменения в этом списке, а иногда нам нужно просто выполнить итерацию по списку. Меня беспокоит то, следуем ли мы правильному шаблону итерации по этим спискам.

В настоящее время, когда нам нужно выполнить итерацию по списку, мы используем следующий шаблон:

// Assuming we have an IObservableList<SomeObject> named objList with some data in it
foreach (var obj in objList.Items)
{
    // some operation on obj
}

Этот шаблон работает нормально, но мы обеспокоены тем, что это не «реактивный» способ сделать это. Есть предложения?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Ну, я не совсем знаком с IObservableList<T>, но я использую Отложенное выполнение при работе с IList<T>.

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

проверьте ссылку для более подробной информации.

0 голосов
/ 25 октября 2019

Вы просматриваете список, используя цикл. Каждый из них работает.

- это первый очевидный кандидат.

пока работает, но немного больше пишет.

foreach работает - если Вы не начинаете изменять список. Причуда foreach заключается в том, что он работает только с перечислителями под капотом, и перечислители становятся недействительными, если коллекция изменена.

Однако следует учитывать одну особенность, которая заключается в уведомлении "ElementAdded" о (пере) создании списка,Обычно в этих классах отсутствуют функции AddRange.

Если вы не расскажете нам, что вы делаете с экземплярами SomeClass во время его изменения, и как выглядит класс, мы не можем сказать вам, является ли это "реактивным" программированием. Но мне кажется, что это просто модное слово.

...