2016-04-22 5 views
0

私はモデルのための2つのクラスライブラリと、ビューモデルのためのもう1つのライブラリを持っています。ビューモデルに追加されたオブジェクトは、別個のモデルプロジェクトから継承しますが、参照を追加するためにMVVMを破棄しますか?

ライブラリの1つにCondenserという名前が付けられ、WaterCooledCondenserというクラスがあります。このクラスは、SubcomponentsプロジェクトのHeatExchangerクラスから継承されます。凝縮器はビジネスロジックですが、ビューモデルが対話するように設計されています(モデルの一部です)。ビューモデルに新しいCondenserを作成すると、HeatExchangerは参照されず、サブコンポーネントへの参照を追加します...ビューモデルには、そのライブラリのクラスについて何も知らないビジネスはありません。モデルに構造を提供することのみを意味していました。

クラスライブラリへの参照を追加すると、MVVMに違反しますか?ビューモデルにモデルの構造について何か知ってもらうという別の方法がありますか?

+1

VMがモデルを知ることができないと言ってくれた人は誰でもあなたを動かしていました。 – Will

+0

@ウィルビューモデルがモデルについて正確に知ってはならないというわけではありませんでした。実際の物理的オブジェクトが派生する抽象クラスについて知っておくべきではないと思いました。私は抽象クラスを構造体を定義する "コア"に入れ、入力/出力変数のセットが解決可能なシステムを与えると言うデータベースを持っています。 – kleineg

+1

クラスが内部クラスである場合、そのクラスをアセンブリに公開することはできません。あなたの問題は、決して存在しません。喜ぶ!あなたは何も心配する必要はありません。 – Will

答えて

0

これらが第三者のライブラリである場合、運が悪い可能性があります。しかし、一般的には、あなたのViewModelは他のライブラリのインタフェースとのやりとり方法しか知りません。このようにして、ライブラリが実装を変更した場合、インタフェースが同じであれば、それは気にならないはずです。

これは、MVVMではモデルの基本構造を知ることができるということです。ビジネスロジックとモデルを完全に別々に保つことは、クラスの詳細を知ることが困難になります。このインターフェイスを防ぐために、将来のコードの校正には素晴らしいツールです。

私は塩の穀物で私が言うことを取るでしょう。これは完全に私のこのデザインパターン内での作業経験に基づいています。

関連する問題