MVVMCross 6.0.1 依赖注入不起作用



我正在尝试让我的 Xamarin Forms MvvmCross6 正常工作,并且已经敲打了几个小时的头,感到沮丧。我敢肯定,这可能是我做错了的愚蠢事情。目前,我一直在尝试遵循以下示例:https://nicksnettravels.builttoroam.com/post/2018/04/13/MVX=0F-A-first-MvvmCross-Application-(MVX1-days-of-MvvmCross(.aspx

我正在尝试让构造函数级依赖项注入工作。在我的应用程序中.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>();
}
}

在我的登录视图模型中(也在核心中( 我有:

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 存储库的链接,用于我的示例项目 playground 代码。 https://github.com/danielPollack/ToolboxMvvmCross6Forms

我意识到MVVMCross6只发布了几周,这可能是我非常愚蠢的事情。我做错了什么?

我建议不要像这样覆盖AppStart。例如,您不会阻止导航,因此它会在完成设置之前继续。这可能会导致事情处于不良状态。用:

RegisterAppStart<LoginViewModel>();

最新更新