[英]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.