Я пытаюсь заставить мои Xamarin Forms MvvmCross6 работать правильно, и несколько часов бился в мою голову, и я расстроен.Я уверен, что это, вероятно, что-то глупое, что я делаю неправильно.В настоящее время я пытаюсь следовать примеру здесь: https://nicksnettravels.builttoroam.com/post/2018/04/13/MVX=0F-A-first-MvvmCross-Application-(MVX1-days-of-MvvmCross).aspx
Я пытаюсь заставить внедрение зависимости уровня конструктора работать.В моем App.cs (основной проект) у меня есть:
public override void Initialize()
{
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
CreatableTypes()
.EndingWith("Client")
.AsInterfaces()
.RegisterAsLazySingleton();
Mvx.RegisterSingleton<IUserDialogs>(() => UserDialogs.Instance);
RegisterCustomAppStart<AppStart<LoginViewModel>>();
}
В основном проекте AppStart.cs у меня есть следующее
public class AppStart<TViewModel> : MvxAppStart<TViewModel> where TViewModel : IMvxViewModel
{
private readonly IMvxNavigationService _mvxNavigationService;
public AppStart(IMvxApplication app, IMvxNavigationService mvxNavigationService)
: base(app, mvxNavigationService)
{
_mvxNavigationService = mvxNavigationService;
}
protected override void NavigateToFirstViewModel(object hint)
{
NavigationService.Navigate<LoginViewModel>();
}
}
В моем LoginViewModel (также в ядре)У меня есть:
public class LoginViewModel : MvxViewModel
{
private readonly IMvxNavigationService _navigationService;
private readonly IUserDialogs _userDialogs;
public LoginViewModel(IMvxNavigationService navigationService, IUserDialogs userDialogs)
{
_navigationService = navigationService;
_userDialogs = userDialogs;
}
Когда я отлаживаю код, я получаю ошибку ссылки на объект во время выполнения.Я могу заставить его работать правильно только в том случае, если я удалю IUserDialogs из конструктора (а также _userDialogs = userDialogs из тела конструктора)
Вот ссылка на мой репозиторий github для моего примера кода игровой площадки проекта.https://github.com/danielPollack/ToolboxMvvmCross6Forms
Я понимаю, что MVVMCross6 был выпущен всего несколько недель, и это, вероятно, что-то действительно глупое с моей стороны.Что я делаю не так?