2010-12-05 3 views
2

Я разрабатываю приложение WPF, в котором он будет ссылаться на библиотеку классов, которая содержит в основном бизнес-объекты и некоторые методы для управления этими объектами. Поскольку эта библиотека используется совместно с WPF, мне нужно использовать интерфейс INotifyPropertyChanged.Библиотека многоразового класса - INotifyPropertyChanged

Тем не менее, я вижу будущие использования в библиотеке, которые не могут определенно полагаться на WPF (или обладать необходимостью уведомлений об изменении свойств) в качестве уровня представления. В вашем профессиональном опыте было бы лучше опустить интерфейс, чтобы гарантировать, что DLL «чиста» из ненужного кода для использования в будущем, путем поиска альтернативного метода или использования интерфейса и перехода?

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

Спасибо.

ответ

2

Я не согласен с тем, что поведение INotifyPropertyChanged должно находиться только внутри ViewModel. Хотя INotifyPropertyChanged в значительной степени используется на уровне презентации, его значение выходит за пределы уровня Presentation.

Каждый из моих моделей обычно содержит поведение INotifyPropertyChanged, а не только ViewModel.

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

2

Я бы опустил INotifyPropertyChanged в бизнес-слое.

Если мне нужно, я могу получить детей и сделать их INotifyPropertyChanged, или я могу создать класс «model», и он может содержать экземпляр для моих бизнес-объектов.

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

1

Реализации INotifyPropertyChanged принадлежат ViewModels, которые инкапсулируют состояние GUI/View и связанного с ними поведения, так что они легко проверяются. ViewModels принадлежат слою представления. Весь код многократно используемого вида-агностик должен быть перенесен на другой уровень. Итак, если вам нужно поменять WPF, создайте другой слой представления, который использует этот слой, и вам хорошо идти. Нижний слой не должен делать предположений над слоем над ним .. поэтому в этом слое не будет INotifyPropertyChanged.