簡體   English   中英

如何注冊助手類以在Unity中傳遞對象實例

[英]How to register a helper class for passing object instances in Unity

我有一種情況,我需要使用助手類來注入類型的實例。 在我們的系統中,我們目前正在使用Unity將該對象注入到各個層中。

這是我目前擁有的:

container.RegisterInstance<ITest, new Test()>();

但是相反,我想使用一個幫助程序類來為我創建實例:

container.RegisterInstance<ITest, Helper.GetITestIntance()>();
container.RegisterType<ITest>(
    new ContainerControlledLifetimeManager(),
    new InjectionFactory(o => Helper.GetITestIntance()));

據此: http : //social.msdn.microsoft.com/Forums/en/wpf/thread/b71665b9-cc71-4c88-9776-6ccb4f871819似乎沒有直接的方法。 您既可以注冊將要使用的實例,也可以注冊容器將在需要時自行實例化的“類型”。 似乎沒有任何方法可以注冊“工廠”,類型注冊方法也不會接受任何委托/回調。

可以使用某種方式使用Container Extensions-也許您將能夠攔截實例的查詢,然后提供自己的響應。.我認為這是開始閱讀它的好地方:

http://visualizationtools.net/default/unity-objectbuilder-part-i/
http://visualizationtools.net/default/unity-objectbuilder-part-ii/

編輯:對不起,對不起,我忽略了LifetimeManager注冊參數。 看來這正是您要尋找的東西: http : //tavaresstudios.com/Blog/post/Writing-Custom-Lifetime-Managers.aspx

因此,以LifetimeManager的形式編寫工廠,創建將使用GetValue方法完成,並在此Manager中注冊一個Type-然后Unity將向Manager詢問對象實例。

暫無
暫無

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

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