Catel DependencyInjection问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Catel DependencyInjection问题相关的知识,希望对你有一定的参考价值。

我想使用CreateInstanceWithParametersAndAutoCompletion()创建一个我将与UIVisualizerService一起使用的viewmodel实例。我拥有的构造函数参数之一是我拥有的存储库。此存储库有一个构造函数,它将connectionStr作为参数:

var repos = new Repository( connectionStr );

ServiceLocator.Default.RegisterInstance(回购);

不幸的是,当我尝试实例化我的MyViewModel()类时,找不到存储库。然后我尝试将其实例化如下:

var userLoginVm = TypeFactory.Default.CreateInstanceWithParametersAndAutoCompletionWithTag<UserLoginViewModel>( new Repository( connectionStr ));

(我已经尝试了很多方法,但是得到了关于无法注入存储库的相同问题)。

15:27:32:626 => [DEBUG] [Catel.IoC.TypeFactory] ​​[1]使用特定参数创建“DesktopTool.ViewModels.UserLoginViewModel”类型的实例。在缓存中找不到构造函数,因此搜索正确的构造函数15:27:32:626 => [DEBUG] [Catel.IoC.TypeFactory] ​​[1]检查构造函数'public ctor(CurrSession pCurrSession,Repository pUserRepos,IUIVisualizerService pVisualService) ,IMessageService pMsgService)'可以使用15:27:32:628 => [DEBUG] [Catel.IoC.TypeFactory] ​​[1]构造函数无效,因为值'xxx.Repository'不能用于参数'xxx.Repository “

我即将放弃这一点。有关如何正确注册我的存储库类以使注入正常工作的任何建议?

答案
  1. 尝试ViewModelFactory,这是为了这种东西。
  2. 正如您在日志记录中看到的那样,您需要注入2个参数

CurrSession pCurrSession,Repository pUserRepos

所以你需要指定pCurrSession和pUserRepos

以上是关于Catel DependencyInjection问题的主要内容,如果未能解决你的问题,请参考以下文章

viewmodel + Catel 上的验证

将 catel 与 3rd 方控件一起使用

Catel 与 Xamarin.Forms

Catel MVVM 结构

通过 Catel 命令使用参数

如何从 Catel 项目迁移到 Orchestra + MahApps? (.NET 4.0)