0

コンテナに保存されているサービスオブジェクト(主にシングルトンインターフェイスとして)を解決しようとしていますが、

ViewModelsがServicesofServicesモジュールを使用するドメインモジュールがあります。

ドメインモジュール内またはドメインモジュールのViewModels内で解決するために、どこでどのように推奨しますか?

ViewModelのコンストラクター内でこれを実行できる場合、サービスが登録された後、以下のコードで十分ですか、これを実行したくない場合はどうなりますか?

    public DetailsViewModel(IWService wSvc,)
    {
        wService = wSvc;
    }

「モデルの表示」でサービスオブジェクト(コンテナに格納されている)を取得するための最良のアプローチは何ですか?

ここで提供したのはサンプルです。助けてくれてありがとう

4

1 に答える 1

3

ViewModelは、コンストラクターの依存性注入を通じて使用するサービスを取得することをお勧めします。どのアプローチを決定する場合でも、主要な概念の1つは、ViewModelをテストする機能であることを覚えておく必要があります。通常、これには、ViewModelにサービスの模擬実装を提供して、それらのサービスとは独立して動作をテストできるようにすることが含まれます。コンストラクターインジェクションを使用する場合は、モックサービスを簡単に作成し、それらをViewModelのコンストラクターに渡して、単体テストを作成するかどうかをテストできます。現時点で単体テストを作成する予定がない場合でも、特定の設計スキームに従う習慣を身に付けるのは正当な理由だと思います。

public class SomeViewModel
{
    private IEventAggregator events;
    private ISomeService someService;

    public SomeViewModel(IEventAggregator events, ISomeService someService)
    {
        this.events = events;
        this.someService = someService;
    }
}
于 2013-02-20T16:32:31.623 に答える