参数注入Prism 7和Unity

问题描述 投票:0回答:1

我使用Jon Wagner的Insight.Database作为我的micro-ORM,这意味着我的(数据库)接口没有具体的实现。

我正在尝试将其中一个接口注入我的Prism 7 MainWindowViewModel,只是为了查看数据库是否存在(在这个阶段 - 很明显,我会在以后再做很多)。

然而,要么新的Unity搞砸了,要么Prism不喜欢我这样做的方式。在过去只有Unity的时候,使用以下代码并不是一件令人愉快的事情,但是相当合适。

var conn = ConfigurationManager.ConnectionStrings["default"];
container.RegisterType<IConnection>(new InjectionFactory(con 
                         => conn.AsParallel<IConnection>());

但这是不同的。我承认我是Prism的新手,但IContainerRegistry没有任何类似的功能。

通过使用

var container = containerRegistry.GetContainer();

我可以获得基本容器,但这也已经改变了,它遵循其前辈的标准,避免使用示例的体面文档,所以我最好的近似是这个,至少编译。

container.RegisterInstance(typeof(IConnection),
     "DbConnection", new InjectionFactory(con =>    
        connection.AsParallel<IConnection>()), null);

编译,但它绝对不会注入。当AutoWireUp尝试实例化MainWindowViewModel时,我遇到了运行时错误。

任何人都能指出我的答案或有用的资源吗?

c# unity-container prism insight.database
1个回答
0
投票

通常,持续的态度已经解决了这个问题。

首先,确保App.xaml.cs包含此内容

using Unity;

这使我们可以访问RegisterType <T>()。

从那里,这就是所需要的。

container.RegisterType<IConnection>(new InjectionFactory(s => 
connection.AsParallel<IConnection>()));

很抱歉打扰你,伙计。现在好了。

我已经发布了答案,因为我怀疑我是最后一个遇到这个但我们生活在希望中的人。

© www.soinside.com 2019 - 2024. All rights reserved.