7

私は、次のプロジェクトを含む WPF MVVM プロジェクトに取り組んでいます。

  • ドメイン、
  • ViewModel、
  • インフラストラクチャー、
  • ビュー

たとえばIFileService、ファイルを使用していくつかの操作を提供する必要があり、ビジネス ロジックが含まれていない場合、このインターフェイス FileService の実装はインフラストラクチャ プロジェクトにあると確信していますが、IFileServiceインターフェイスをどこに置くべきか疑問があります。

ViewModels プロジェクトでこのインターフェイスを使用する必要があります。このプロジェクトに配置すると、インフラストラクチャが ViewModels を参照することになり、ビジネス関連のクラスを含むドメインに配置すると、良くないと思います。

プロジェクト間の構造と参照を整理するのに最適なものと、次のようなインターフェイスを配置する場所を教えてくださいIFileService

4

3 に答える 3

4

うーん、またはのような追加のプロジェクトを作成してみませんDALDataLayer? それはモデル クラスを提供しますが、これもあなたのリストにはありません。VM がデータがどこからロードされたかを認識しないように、または(それが私の好みのオプションです) を使用IFileServiceすることを好みますが、そこにインターフェイスを配置することもできます。DataProvidersRepositories

私見プロジェクトInfrastructureには、洗練されたロジックを含めるべきではありません。そこにいくつかの便利なメソッドとクラスを配置し、どこでも参照できるように、できるだけシンプルでクリーンに保ちます。おそらく、あなたもそれを必要としないでしょう。

于 2013-03-22T11:12:39.333 に答える
3

私が MVVM プロジェクトに使用する独自のルールは、すべてのプロジェクトインフラストラクチャ プロジェクトへの参照を持ち、インフラストラクチャ プロジェクトが他のプロジェクトへの参照を持たないというものです。

したがって、IMHO、IFileService、および一般的なインターフェイスは、インフラストラクチャ プロジェクトに含める必要があります。次に、実装をどこに置くかを決めるのはあなた次第です。インフラストラクチャ プロジェクトには通常、非常に基本的なロジックの実装があり、最終的な実装は専用のプロジェクトに行きます。

私が時々このルールに追加する唯一の例外は、既存の MVVM フレームワークに基づいて開発を行う場合であり、インフラストラクチャもそれを参照する可能性がありますが、私はこのアプローチを避けようとしています。

于 2013-03-22T13:29:38.510 に答える
1

IFileServiceインターフェイスを Infrastructure プロジェクトに配置する必要があります。これはコアプロジェクトの権利であるため、これによりすべてのプロジェクトで利用できるようになります。また、同期ファイルリーダーと非同期ファイルリーダーなど、さまざまな実装がある場合があります。そのため、実装はモジュールまたは ViewModel に入る可能性があります。

于 2013-03-22T11:14:53.763 に答える