私はこの2年間、いくつかのデータベースのWinformsアプリケーションを開発しましたが、すべて正常に動作します。このアプリケーションは、レイヤー(DataAccess、ビジネスロジック、およびUI)上に構築されています。ビジネスロジックの場合、すべてのオブジェクトは、次の定義を持つ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に関するWebキャストをいくつか見ました。これらのWebキャストでは、コレクションおよびデータバインディングサポートObservableCollection(Of T)の基本クラスとして使用されます。
一部のアプリケーションをWinformsからUIレイヤーのWPFに移行することを考えています。
私の質問は、私のビジネスロジックでは、BindingList(Of T)に基づいてコレクションを保持する方がよいのか、それともObservableCollection(Of T)から継承するように基本コレクションクラスを変更する必要があるのかということです。Winformsアプリケーション、WPFアプリケーション、またはASP.NETでも使用できる、すべてのプロジェクトに固有のベースコレクションを保持したいと思います。プロジェクトでLinqtoObjectsも使用しているので、フレームワーク2.0のみに基づいてプロジェクトを維持することで制限はありません。