Я пытаюсь выяснить то, что дало бы мне самый хороший код. Который немного субъективен, конечно, я понимаю.
У меня есть приложение, которое получает доступ к базе данных, для которой я записал блок, который скрывает детали об этой базе данных из всех приложений, которые используют этот блок.
У меня также есть приложение WPF, которое использует этот блок для отображения различных расчетов стоимости, в которых я хотел бы использовать привязку данных.
Привязка данных только возможна к свойствам объектов (насколько я взялся за работу). Это означало бы, что мне будет нужен объект, предпочтительно с поддержкой INotify и диапазоном объектов. Однако я предпочел бы сохранять INotify и вещи WPF вне блока, который обрабатывает доступ к базе данных.
Как делают другие решают это: Сохраните вещи WPF вне слоя базы данных (такие как INotify), и в Вашем WPF позволяют связывать? Записать обертку? Или большинство людей помещает 'свойство'/'INotify' класс как объект передачи данных непосредственно на слой базы данных?
Вы работаете под неправильным представлением. inotifyPropertyChanged
не вещь WPF. Рассмотрим:
System.dll
System.comPonentModel
Ado.net
и ComponentModel
.
Поскольку все автоматически сгенерированные слои данных Microsoft производит реализацию inotifyPropertyChanged
, почему вы должны относиться к вашему слой данных по-другому? Очевидно, что ваш слой данных должен как-то уведомить своих клиентов при изменении свойств. Почему бы не использовать встроенный механизм NET Framework?
На мой взгляд Любой слой данных, содержащий смежные объекты, должен внедрять уведомления об изменении свойств в зависимости от . inotifyPropertyChanged
был разработан таким механизмом уведомления, так почему бы не использовать его, как он был предназначен?
На более общем примечании: добавление дополнительного слоя обертки - это, как правило, просто неэффективный код в списке. Иногда это необходимо и даже полезно, но не делайте этого только ради этого. Много раз достаточно разработанные объекты слоев данных очень хорошо, как просмотр моделей. Только в том, где модель вашего представления расходится от вашего слоя данных или там, где вам нужна дополнительная функциональность, если вы должны учитывать дополнительную сложность, а затем только в каждом конкретном случае.
Другие люди решают это, внедряя MVVM шаблон дизайна.
Я думаю, что самое чистое решение состоит в том, чтобы написать объект обертки в вашей монтаже WPF и сохранить INOTIFY
типов из сборки базы данных. Нет причин добавлять осложнение inotify
к слою базы данных, если он не предоставляет конкретного преимущества.
Напишите обертку. Если упаковка довольно прямая, вы можете даже построить генератор для генерации всех классов на основе источника Dто
Вы можете посмотреть POSTSHARP , это просто та вещь, ориентированная на аспекцию программирование (AOP). Существует множество примеров плетение inotify * в модели модели. Я еще не начал использовать PostSharp в реальном проекте, но он выглядел перспективным в некоторых тестовых сценариях, которые мы его пробовали.
Еще одна вещь, которую нужно отметить, что полезно - если вы знаете, что собственность, которую вы обязательно, неизменно (то есть объект Singleton или что-то, что будет инициализировать один раз и никогда не трогать), вы Не нужно Необходимо сделать его inotifyPropertyChanged - простое свойство будет работать нормально.