16

私は何をするのが一番いいのか興味がありましたViewModels。インターフェイスを実装するINotifyPropertyChangedか、から派生させる方が良いですかObservableObject

ObservableObjectクラスINotifyPropertyChangedは、のような退屈なコードを実装して実行しますRaisePropertyChanged

INotifyPropertyChangedPropertyChangedイベントを実装する必要があります。

私の観点からは、 を使用する方がより論理的に思えますObservableObjectが、ほとんどのチュートリアルでは、 にINotifyPropertyChangedインターフェースを実装していますViewModel

シンプルにするためだと思いますか、それとも論理的な理由があると思いますか?

4

3 に答える 3

17

ObservableObjectMicrosoft.Practices.Composite.Presentation - つまり Prism の一部です。また、 MVVM LightおよびMVVM Foundationにも実装されています。

INotifyPropertyChangedSystem.ComponentModel の一部です。つまり、コア ライブラリにあります。

したがって、まだ Prism やその他のフレームワークのいずれかを含めていない場合は、そのまま使用しINotifyPropertyChangedます。この1つのクラスを取得するためだけにそれを含めることにほとんど意味がないようです.

于 2012-04-10T17:12:55.140 に答える
2

多くのViewModelを実装している場合、INotifyPropertyChangedを実装するために必要な多くの配管コードがあり、独自のViewModel基本クラスを作成するか、それらのいずれかを使用する方がよいでしょう。 MVVM フレームワークによって提供されます ( MVVM Lightは私の選択したフレームワークです)。

そうでなければ、あなたは本当に「DRY」ではありません (同じことを繰り返さないでください)。

編集 - 偶然の考え

通常、ObservableObject は、ViewModel クラスと同じ基本的な機能を軽量に実装したものであり、INPC を提供しますが、完全な ViewModel で使用する可能性のある他の機能の一部を除外していることに注意してください。

于 2012-04-10T17:19:06.403 に答える
0

一般に、他のすべてが等しい場合は、先祖クラスから派生するのではなく、インターフェイスを実装するアプローチを採用することをお勧めします。必要な数のインターフェイスを実装できますが、親は1つしかないため、親を「賢く」使用することを好みます。インターフェイスを実装したいものを取得できる場合は、後で継承するためにオプションを開いたままにしておくことをお勧めします。

于 2012-04-10T17:16:18.677 に答える