これは私の質問を示すためのサンプルコードです。私は単純化のために他の無関係のコードを削除しました。アプリケーションはDesignDataServiceのインスタンスが他のパラメータとのDataServiceのインスタンスとして渡され、メソッド/コンストラクタはタイプIDataServiceのパラメータを必要とするとき、設計モードにある場合、上記のコードでは、私の理解に基づいIoC(コンストラクタインジェクション)では、いつ注入されたコンストラクタのインスタンスが作成されますか?
public class ViewModelLocator
{
static ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
if (ViewModelBase.IsInDesignModeStatic)
{
SimpleIoc.Default.Register<IDataService, DesignDataService>();
}
else
{
SimpleIoc.Default.Register<IDataService, DataService>();
}
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
}
。さて、私の質問は、タイプIDataServiceのインスタンスがいつ作成されるのですか? IDataService型のオブジェクトがそのコンストラクタにパラメータを持つことは可能ですか?
PS:私はwpf、MVVMパターン、Iocのコンセプトに慣れていません。だから簡単に説明してください。ありがとう。