Я занимаюсь разработкой приложения C # wpf mvvm, в котором данные модели представлены иерархиями, и мои модели представления должны наблюдать части иерархий между ними. Я хотел бы предложить дизайн, который облегчает поддержку приложения при изменении структурных иерархий модели.
Пример:
Модель имеет иерархию A-> B->C-> D. ViewModel хочет получить уведомления об изменениях D и B. В какой-то момент другая ViewModel устанавливает A в совершенно новое значение, и все другие наблюдающие модели ViewModel должны быть уведомлены о том, что их соответствующие D и B больше не действительны.
Моя идея дизайна пока что: я исправил иерархию моделей, заменив прямую ссылку уникальным идентификатором, таким как GUID. Когда ViewModels хочет получить экземпляр D, он на самом деле должен попросить репозиторий получить наблюдаемый прокси-сервер D. Когда происходит запись в A, наблюдаемый прокси-сервер получает уведомление об этом, и поэтому ViewModel также получает уведомление. Жизненный цикл проксируемого прокси привязан к ViewModel, который его использует, например, ViewModel решает, когда наблюдаемый прокси будет удален.
Возможно, уже есть шаблон, который решает эту проблему в C # MVVM? Я видел, что Android Jetpack представил LiveData, и он выглядит очень похоже на то, что я пытаюсь сделать.