Unity中RegisterInstance的后期版本

时间:2011-03-22 08:20:59

标签: c# .net unity-container ninject late-binding

在我们的项目中,我们使用Unity作为依赖注入框架。现在我面临一种情况,我需要IUnityContainer.RegisterInstance()的后期版本。

在ninject中,我正在尝试的代码看起来像这样:

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

然而,在Unity中,到目前为止,我还没有找到这样做的方法。

我需要这个的原因是,IMyInterface的实例尚未创建,绑定发生且对象创建也不是由Unity处理的(我无法随时替换它不久)。

1 个答案:

答案 0 :(得分:4)

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

unityContainer.AddNewExtension<LazySupportExtension>();

然后您可以执行以下操作:

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

希望这有帮助。