2

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

ただし、プレゼンテーション層としてWPFに特に依存しない(またはプロパティ変更通知の必要性がある)ライブラリでの将来の使用は見られます。あなたの専門的な経験では、別の方法を見つけてDLLが不要なコードから「クリーン」になるようにインターフェイスを省略するか、インターフェイスを使用して先に進む方がよいでしょうか。

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

ありがとう。

4

3 に答える 3

2

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

必要に応じて、子を派生させてINotifyPropertyChangedにするか、「モデル」クラスを作成して、ビジネスオブジェクトのインスタンスを含めることができます。

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

于 2010-12-05T03:09:42.443 に答える
2

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

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

つまり、INotifyPropertyChangedの動作が、コンシューマーによってプレゼンテーション層の外部で使用される可能性があることを確信できる場合は、そのままにしておきます。

于 2010-12-05T04:25:09.320 に答える
1

INotifyPropertyChanged の実装は、簡単にテストできるように、GUI/View の状態と関連する動作をカプセル化する ViewModel に属します。ViewModel はプレゼンテーション層に属します。ビューに依存しない再利用可能なコードはすべて、別のレイヤーにプッシュする必要があります。したがって、WPF を交換する必要がある場合は、このレイヤーを使用する別のプレゼンテーション レイヤーを構築すれば、準備完了です。下位のレイヤーは、その上のレイヤーを想定してはなりません。したがって、このレイヤーには INotifyPropertyChanged はありません。

于 2010-12-05T03:44:15.003 に答える