2010-12-05 18 views
2

ほとんどのビジネスオブジェクトとそのオブジェクトを操作するいくつかのメソッドを含むクラスライブラリを参照するWPFアプリケーションを開発しています。このライブラリはWPFと組み合わせて使用​​されているため、INotifyPropertyChangedインターフェイスを使用する必要があります。再利用可能なクラスライブラリ - INotifyPropertyChanged

しかし、プレゼンテーションレイヤーとしてWPFに特に依存していない(またはプロパティーの変更通知が必要な)ライブラリの将来の使用が見えています。あなたの専門家の経験では、は、代替メソッドを見つけることによって将来の使用のためにDLLが不要なコードから "クリーン"であることを確認するインターフェイスを省略するか、インターフェイスを使用して移動する方が良いでしょうか?

(明らかに、これはさまざまな他のプログラミングプラクティスに適用できます)。

ありがとうございました。

答えて

2

私は、INotifyPropertyChangedの動作がViewModel内にのみ存在することに同意しません。 INotifyPropertyChangedはプレゼンテーションレイヤー内で頻繁に使用されますが、プレゼンテーションレイヤーを超えて拡張されています。

私のモデルのすべてには、一般にViewModelだけでなく、INotifyPropertyChangedの動作が含まれています。

これは、INotifyPropertyChangedビヘイビアがコンシューマによってプレゼンテーションレイヤーの外部で使用される可能性があることを自信が持てる場合は、そのまま残しておきます。

2

ビジネスレイヤーでINotifyPropertyChangedを省略します。

私が必要な場合は、子を派生させてINotifyPropertyChangedにするか、 "モデル"クラスを作成してビジネスオブジェクトにインスタンスを含めることができます。

これはまた、INotifyPropertyChangedについて何も知る必要のないサーバーコードで上記のオブジェクトを使用できるようにするだけでなく、他のレイヤー(プレゼンテーション、データアクセスなど)からビジネスレイヤーを分離するのに役立ちます。

1

INotifyPropertyChanged実装はViewModelsに属し、GUI/Viewの状態と関連する動作をカプセル化して、簡単にテストできるようにします。 ViewModelsは、プレゼンテーションレイヤーに属します。ビューに依存しない再利用可能なコードはすべて、別のレイヤーにプッシュダウンする必要があります。 WPFをスワップアウトする必要がある場合は、このレイヤーを使用する別のプレゼンテーションレイヤーを作成してください。下位のレイヤーは、そのレイヤーよりも前のレイヤーを想定してはいけません。このレイヤーにはINotifyPropertyChangedはありません。

関連する問題