Проблема
Часто классы контроллеров (MV C, MV VM , MV P ) которые манипулируют представлениями, имеют доступ ко множеству сервисов. Цель одного из этих сервисов состоит в том, чтобы обновить классы контроллера данными, относящимися к контроллеру.
Возьмем этот класс, например:
public sealed class RestaurantInformation
{
public IEnumerable<Networking.Models.ServerModels.Restaurant> NearestRestaurants { get; internal set; }
public IEnumerable<Networking.Models.ServerModels.Restaurant> NewestRestaurants { get; internal set; }
public IEnumerable<Networking.Models.ServerModels.Category> Categories { get; internal set; }
}
Всякий раз, когда сервис получает обновленную информацию от сеть, относящаяся к категориям, NewestRestaurants или NearestRestaurants, она упаковывает все данные в объект, который имеет тип класса RestaurantInformation, и отправляет его в класс контроллера для передачи в представление.
Я решил поместить свой C Оцените в моем искусстве GCSE, чтобы хорошо использовать и строить диаграммы, чтобы помочь вашему пониманию моей проблемы. (Приношу извинения за то, что вы собираетесь увидеть.)
![enter image description here](https://i.stack.imgur.com/Vb1vg.png)
Как вы теперь видите, процесс выглядит следующим образом:
- Загружается представление, которое, в свою очередь, вызывает RestaurantViewControl.
- Затем RestaurantViewControl вызывает RestaurantService для извлечения новых категорий из API.
- API возвращает новые категории в RestaurantService. (Вы можете видеть здесь, что у ресторанного сервиса теперь есть список, который содержит B).
- Затем RestaurantService уведомляет RestaurantViewControl, используя класс выше, с новым списком категорий!
- Теперь мы должны обновить список категорий в RestaurantViewControl наиболее эффективным способом с новыми элементами.
В настоящее время я очищаю список категорий, а затем заменяю все значения новым списком. Я хочу знать две вещи:
- Какой самый эффективный способ обнаружения изменений в объекте списка категорий?
- Какой самый эффективный способ обновления категорий список, который все еще может содержать объекты, которые полностью допустимы в этом списке.