Catel DependencyInjection问题

时间:2018-03-15 20:16:58

标签: c# mvvm dependency-injection catel

我想使用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 =&gt; [DEBUG] [Catel.IoC.TypeFactory] ​​[1]创建类型&#39; DesktopTool.ViewModels.UserLoginViewModel&#39;使用特定参数。在缓存中找不到构造函数,因此搜索正确的构造函数 15:27:32:626 =&gt; [DEBUG] [Catel.IoC.TypeFactory] ​​[1]检查构造函数&#39; public ctor(CurrSession pCurrSession,Repository pUserRepos,IUIVisualizerService pVisualService,IMessageService pMsgService)&#39;可以使用 15:27:32:628 =&gt; [DEBUG] [Catel.IoC.TypeFactory] ​​[1]构造函数无效,因为值&#39; xxx.Repository&#39;不能用于参数&#39; xxx.Repository&#39;

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

1 个答案:

答案 0 :(得分:0)

  1. 试试ViewModelFactory,这是为了这类东西。

  2. 正如您在日志记录中看到的那样,您需要注入 2 参数

  3. CurrSession pCurrSession,Repository pUserRepos

    因此您需要同时指定pCurrSession和pUserRepos