У меня есть простая viewModel:
public class MainViewModel
{
public MainViewModel(IViewModelFactory viewModelFactory)
{
//...here I need accesss to other viewModels
}
}
Я решил добавить фабрику в конструктор, чтобы позже создать дочерние viewModel, однако в inte rnet много противоречивой информации о том, как использовать UnityContainer, шаблон антидокатора службы, et c. Это немного сбивает с толку. Во всяком случае, я пришел с этим примером кода:
public interface IViewModelFactory
{
T Resolve<T>();
}
public class ViewModelFactory : IViewModelFactory
{
public ViewModelFactory(IUnityContainer unityContainer)
{
_container = unityContainer;
}
private IUnityContainer _container { get; set; }
public T Resolve<T>()
{
return (T)this._container.Resolve<T>();
}
}
Здесь я создал фабрику сервисов, в которую я передаю UnityContainer. После этого я бы зарегистрировал его и внедрил в несколько viewModels, где это уместно. Я не сделал контейнер глобально доступным для всех, так что, похоже, я мог бы избежать этого, однако я хотел бы спросить, считается ли этот подход все еще шаблоном поиска служб (потому что я ссылался на контейнер) и поэтому должен избегать? Если нет, есть ли какие-нибудь рекомендации, которые можно было бы использовать, чтобы сделать это лучше или правильнее?
Спасибо.