Будет ли считаться нарушением? (DI)
Создаю для себя проект и задался вопросом: будет ли считаться следующий код нарушением какой-либо концепции?
Проект делаю с использованием prism. Есть базовый класс NavigationViewModelBase. В наследуемых классах будет использоваться IRegionManager, который я получаю через DI. Пока таких классов немного, но в будущем код разрастется. И я подумал зачем мне в каждом наследуемом классе явно указывать новое поле с IRegionManager и получать его через конструктор, если это можно сделать в базовом NavigationViewModelBase?
Примеры:
Как есть сейчас:
ViewModelA.cs
private IRegionManager _regionManager;
public ViewModelA(IRegionManager _regionManager)
{
_regionManager = regionManager;
}
private void SomeMethod()
{
_regionManager.RequestNavigate("....");
}
Что думаю сделать:
NavigationViewModelBase.cs
protected IRegionManager RegionManager { get; }
public NavigationViewModelBase()
{
var container = ((PrismApplicationBase)Application.Current).Container;
RegionManager = container.Resolve<IRegionManager>();
}
ViewModelA.cs
private void SomeMethod()
{
RegionManager.RequestNavigate("....");
}