我想注入一個列表,我的視圖模型構造與服務定位MVVM光simpleIoc構造函數注入
我的視圖模型:
public class ShowEmployeeViewModel: ViewModelBase
{
private IList<IEmployee> _empl;
public ShowEmployeeViewModel(IList<IEmployee> emp)
{
this._empl = emp;
_empl.Add(new Employee() { empName = "foo", enpFunction = "bar" });
}
}
我的服務定位:
public class ViewModelLocator
{
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
//register the interface against the class
SimpleIoc.Default.Register < IList <IEmployee>, List <Employee>>();
SimpleIoc.Default.Register<ShowEmployeeViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public ShowEmployeeViewModel ShowEmployee
{
get
{
return ServiceLocator.Current.GetInstance<ShowEmployeeViewModel>();
}
}
當我運行這段代碼我遇到了一個錯誤: 「無法註冊:在List`1中找到多個構造函數,但沒有標記爲PreferredConstructor。」 PS:當我嘗試一個登記簿列表「的IList」我只得到了這個錯誤,但是當我登記我的界面是這樣的:
SimpleIoc.Default.Register < IEmployee , Employee >();
它工作正常,任何想法如何註冊一個列表? 由於事先
您在這裏混的事情了。 DI容器(通常是DI)並不意味着要建立DTO和實體;其目的是構建應用程序組件的圖形,即包含該應用程序行爲的類。 'ShowEmployeeViewModel'是一個DTO,'IEmployee'是一個實體。不要在容器中註冊它們。 – Steven