2011-03-22 68 views
3

在我们的项目中,我们使用Unity作为依赖注入框架。现在我面临的情况是,我需要一个迟到版本的IUnityContainer.RegisterInstance()Unity中RegisterInstance的最新版本

在ninject,我试图做的代码,会是这个样子:

this.Bind<IMyInterface>().ToMethod(context => GetMyObjectLateBound()); 

在团结,但是,我还没有发现这样的一种方式,那么远。

我之所以需要这个功能的原因是,IMyInterface的实例尚未创建,绑定发生并且对象创建也不能由Unity处理(我无法在短时间内替换它)。

回答

5

Unity支持Lazy。您需要将以下扩展名添加到统一:

unityContainer.AddNewExtension<LazySupportExtension>(); 

那么你就可以做到以下几点:

unityContainer.RegisterType<IComponent, Component1>(); 
var lazyComponent = unityContainer.Resolve<Lazy<IComponent>>(); 

希望这有助于。

+0

延期从哪里来?它不在任何地方的Unity DLL中。 – 2011-03-27 05:32:50

+1

请参阅:http://archive.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PierreCode&ReleaseId=4357 – 2011-03-27 09:49:11

+0

链接不再工作。 – thepirat000 2014-08-15 00:31:46