я хочу, чтобы ввести список мой ViewModel конструктор с ServiceLocatorMVVM инъекции света simpleIoc конструктор
мой ViewModel:
public class ShowEmployeeViewModel: ViewModelBase
{
private IList<IEmployee> _empl;
public ShowEmployeeViewModel(IList<IEmployee> emp)
{
this._empl = emp;
_empl.Add(new Employee() { empName = "foo", enpFunction = "bar" });
}
}
мой ServiceLocator:
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: я только получил эту ошибку, когда я пытаюсь Registre список «IList», но когда я зарегистрировать свой интерфейс, как это:
SimpleIoc.Default.Register < IEmployee , Employee >();
она отлично работает, любая идея, как зарегистрировать список? заранее спасибо
Вы Путаете здесь. Контейнер DI (и DI в целом) не предназначен для создания DTO и объектов; он предназначен для создания графиков компонентов приложения, то есть классов, которые содержат поведение этого приложения. 'ShowEmployeeViewModel' является DTO, а' IEmployee' является сущностью. Не регистрируйте их в контейнере. – Steven