簡體   English   中英

參數注入Prism 7和Unity

[英]Parameter injection with Prism 7 and Unity

我使用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時,我遇到了運行時錯誤。

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

通常,持續的態度已經解決了這個問題。

首先,確保App.xaml.cs包含此內容

using Unity;

這使我們可以訪問RegisterType <T>()。

從那里,這就是所需要的。

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

很抱歉打擾你,伙計。 現在好了。

我已經發布了答案,因為我懷疑我是最后一個遇到這個但我們生活在希望中的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM