使用Prism 7和Unity进行参数注入

时间:2019-04-01 16:06:22

标签: c# unity-container prism insight.database

我正在使用Jon Wagner的Insight.Database作为我的微型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时,我遇到了运行时错误。

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

1 个答案:

答案 0 :(得分:0)

通常情况下,持续的忙碌解决了这个问题。

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

using Unity;

这使我们可以回访问RegisterType ()。

从那里开始,这就是全部。

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

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

我已经发布了答案,因为我怀疑我会不会是最后一个遇到这种情况的人,但我们充满希望。