使用此基础ctor从应用程序导航到基础视图模型时出现问题



我在baseviewmodel上有一个基类。

我面临着在6.2上实现的导航服务,调试显示了导航到另一个视图模型的问题。

调试显示用户对话框中断。

以这种方式使用基类和这些参数有问题吗。任何人都面临这种问题

public BaseViewModel(IMvxNavigationService navigationService, 
ILoginService loginService,
UserDialogs userDialogs, IValidator validator) {
_navigationService = navigationService;
_loginService = loginService;
_userDialogs = userDialogs;
_validator = validator;
Title = TextSource.GetText(StringResourceKeys.Title);
IsBusyMessage = Resources.Strings.LoadingMesssage;
}

使用像这样的gettext提供程序

公共类ResourcexTextProvider:IMvxTextProvider{专用只读资源管理器_ResourceManager;

public ResourcexTextProvider(ResourceManager resourceManager)
{
_resourceManager = resourceManager;
CurrentLanguage = CultureInfo.CurrentUICulture;
}
public CultureInfo CurrentLanguage { get; set; }
public string GetText(string namespaceKey, string typeKey, string name)
{
string resolvedKey = name;
if (!string.IsNullOrEmpty(typeKey))
{
resolvedKey = $"{typeKey}.{resolvedKey}";
}
if (!string.IsNullOrEmpty(namespaceKey))
{
resolvedKey = $"{namespaceKey}.{resolvedKey}";
}
return _resourceManager.GetString(resolvedKey, CurrentLanguage);
}
public string GetText(string namespaceKey, string typeKey, string name, params object[] formatArgs)
{
string baseText = GetText(namespaceKey, typeKey, name);
if (string.IsNullOrEmpty(baseText))
{
return baseText;
}
return string.Format(baseText, formatArgs);
}
public bool TryGetText(out string textValue, string namespaceKey, string typeKey, string name)
{
throw new System.NotImplementedException();
}
public bool TryGetText(out string textValue, string namespaceKey, string typeKey, string name, params object[] formatArgs)
{
throw new System.NotImplementedException();
}
}

}

您正试图在BaseViewModel的ctor中注入UserDialogs userDialogs。我的猜测是您错过了userDialogs的注册。

首先,应该注入接口而不是实现来提高可维护性:

Mvx.IocConstruct.RegisterType<IUserDialogs, UserDialogs>();

如果我的猜测是正确的,并且你正在使用Acr.UserDialogs,你应该初始化它并将其注册为:

Mvx.IoCProvider.RegisterSingleton<IUserDialogs>(() => UserDialogs.Instance);

然后您可以直接使用接口将其注入任何ViewModel

public BaseViewModel(IMvxNavigationService navigationService, 
ILoginService loginService,
IUserDialogs userDialogs, 
IValidator validator) {
_navigationService = navigationService;
_loginService = loginService;
_userDialogs = userDialogs;
_validator = validator;
Title = TextSource.GetText(StringResourceKeys.Title);
IsBusyMessage = Resources.Strings.LoadingMesssage;
}

HIH-

最新更新