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 “
我即将放弃这一点。有关如何正确注册我的存储库类以使注入正常工作的任何建议?
- 尝试
ViewModelFactory
,这是为了这种东西。 - 正如您在日志记录中看到的那样,您需要注入2个参数
CurrSession pCurrSession,Repository pUserRepos
所以你需要指定pCurrSession和pUserRepos
以上是关于Catel DependencyInjection问题的主要内容,如果未能解决你的问题,请参考以下文章