Многоразовая библиотека классов - INotifyPropertyChanged - PullRequest
2 голосов
/ 05 декабря 2010

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

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

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

Спасибо.

Ответы [ 3 ]

2 голосов
/ 05 декабря 2010

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

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

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

2 голосов
/ 05 декабря 2010

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

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

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

1 голос
/ 05 декабря 2010

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

...