Я разработал некоторые приложения Winforms на основе данных за последние два года, и все работает нормально. Это приложение построено на слоях (DataAccess, Business Logic и UI). Для логики Businness все мои объекты наследуются от базового класса BaseEntity со следующим определением (есть некоторые пользовательские объекты и интерфейсы в сочетании с элементами структуры):
Public MustInherit Class BaseEntity Inherits SerializableObject Implements IEntity Implements IComparer, _ IEditableObject, _ INotifyPropertyChanging, INotifyPropertyChanged, _ IApplicationSecurity End Class
В той же основной библиотеке у меня есть базовая базовая коллекция BaseEntityCollection. Эта коллекция позволяет мне определить для каждого объекта свою связанную строго типизированную коллекцию, которая очень интересна в приложениях на основе данных. Вот базовое определение:
Public MustInherit Class BaseEntityCollection(Of T As BaseEntity)
Inherits BindingList(Of T)
Implements IEntityCollection
Implements INotifyPropertyChanged, INotifyPropertyChanging, ICopyable(Of T)
Implements IDisposable
Implements ISerializable
End Class
Как вы можете видеть, я использую все, что необходимо для правильной привязки данных в Winforms:
- INotifyPropertyChanged, INotifyPropertyChanging, IEditableObject для объекта.
- Коллекция, основанная на BindingList (Of T) для моей коллекции.
Меня также интересуют новые технологии, поэтому я недавно просмотрел веб-трансляцию о WPF. В этой веб-трансляции они используются в качестве базового класса для поддержки коллекции и привязки данных ObservableCollection (Of T).
Я собираюсь перенести некоторые из моих приложений из Winforms в WPF для слоя пользовательского интерфейса.
Мой вопрос в том, что для моей бизнес-логики лучше сохранить мои коллекции на основе BindingList (Of T) или изменить класс базовой коллекции, чтобы он наследовал от ObservableCollection (Of T). Я хотел бы сохранить уникальную базовую коллекцию для всех моих проектов, которая также может использоваться в Winforms Applications, WPF Application или ASP.NET. Я также использую Linq для объектов в своих проектах, поэтому у меня нет ограничений, сохраняя мои проекты на основе только фреймворка 2.0.
Спасибо,
CLABER