Это в приложении xamarin.forms, использующем Prism, но этот вопрос скорее фундаментальный c# вопрос, над которым я путаюсь.
Я использую внедрение зависимостей, и мои типы зарегистрированы в файле app.xaml.cs -> метод RegisterTypes.
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterDialog<BusyDialog, BusyDialogViewModel>();
containerRegistry.RegisterForNavigation<NavigationPage>();
containerRegistry.RegisterForNavigation<MainPage, MainPageViewModel>();
}
Мой ctor модели базового представления определен как:
public ViewModelBase(INavigationService navigationService, IDialogService dialogService)
{
NavigationService = navigationService;
DialogService = dialogService;
}
И все остальные модели представления получают этот базовый класс. Например.
public MainPageViewModel(INavigationService navigationService, IDialogService dialogService)
: base(navigationService, dialogService)
{
}
Мой вопрос заключается в том, что в этом окне MainPage я внедряю 'INavigationService navigationService, IDialogService dialogService'. Во всех моих моделях просмотра я использую NavigationService и DialogService (из базового класса), поэтому не является ли это избыточным кодом?
У меня есть около 20 моделей представления, я добавил IDialogService к своему базовому классу и понял, что мне нужно обновлять конструкторы в каждой модели представления.
Есть ли способ просто внедрить в базовый класс и использовать его всеми классами, которые выводят этот базовый класс без необходимости указывать в конструкторах классов?