私はMVVMを学習しているだけで、計算元の値の変更の結果として、計算されたプロパティへの変更を表示する方法を試しています。私がこれまで見てきた解決策はすべて、カプセル化に重大な違反を犯しており、もっと良いものはないかと考えています。
複雑な税計算の結果を表示する必要があるとします。計算 (およびおそらくその依存関係) は時々変更されるため、厳密にカプセル化しておきたいと思います。
ここで最も頻繁に提供される解決策は、税額が依存するすべてのプロパティを取得して、そのプロパティ自体とそれに依存するすべてのプロパティの ModelView で PropertyChanged を呼び出すことです。つまり、すべてのプロパティは、それを使用する、または使用する可能性のあるすべてのものを知る必要があります。以前は依存していなかったものに計算が依存するように税規則が変更された場合、計算に使用されるすべての新しいプロパティに触れる必要があります (おそらく他のクラスで、おそらく私の管理下ではありません)。税額の PropertyChanged を呼び出してもらいます。それはカプセル化の希望を完全に台無しにします。
私が考えることができる最善の解決策は、計算を行うクラスにPropertyChanged イベントを受け取り、計算に何か変更が加えられたときに税額の新しい PropertyChanged イベントを発生させることです。これにより、少なくともクラスレベルでのカプセル化は保持されますが、それでもメソッドのカプセル化は破られます。クラスは、メソッドがどのように機能するかを知る必要はありません。
それで、私の質問は、より良い方法はありますか(もしそうなら、それは何ですか)?それとも、プレゼンテーションのカプセル化 (MVVM) によって、ビジネス ロジックのカプセル化が妨げられますか? どちらかまたは両方の選択に直面していますか?