たとえば、BindingList<Person> があり、それをコントロールにバインドする場合、Person クラスが INotfiyPropertyChanging / Changed を実装していない場合、基になる List への変更はコントロールに自動的に表示されません。私の質問は、フレームワークに関する限り、これらのインターフェイスの他の用途はありますか? これらのインターフェイスを使用して、これらのイベントに基づいて独自のアクションを実装することについて話しているのではなく、.NET Framework 自体について話しているのですが、これらのインターフェイスを実装する別の必要性はありますか?
1 に答える
100% 自信を持って話すことはできませんが、他に回答がなく、私自身も興味があったので、Reflector を起動して、どのクラスが INotifyPropertyChanged に依存しているかを確認しました。短い答えは次のようになります。いいえ、それ以外の目的で使用されることはありません。
クラスを調べると、非データバインディング参照の一部は次のとおりです。
System.Configuration.ApplicationSettingsBase - したがって、アプリケーション設定用に独自のプロバイダーを実装する場合は、INPC 機能を公開する必要があります。そのため、DataBinding 以外で使用される領域が 1 つありますが、ニッチは非常に狭いものです。
System.Printing.PrintTicket も INPC を実装しています。私は .NET を介して多くの印刷を行っていないので、これは重要かもしれませんが、そうでないかもしれません。本当に言えませんでした。
したがって、質問にもっと完全に答えるには: データバインディングを行っていない場合、クラスに INotifyPropertyChanged を実装するメリットがあるとは思えません。インターフェイスが DataBinding コンテキストの外部で使用されるエッジケースがいくつかありますが、それらの分野で働いていたので、すぐに自分でそれを見つけることができます.