在我们的项目中,我们使用Unity作为依赖注入框架。现在我面临一种情况,我需要IUnityContainer.RegisterInstance()
的后期版本。
在ninject中,我正在尝试的代码看起来像这样:
this.Bind<IMyInterface>().ToMethod(context => GetMyObjectLateBound());
然而,在Unity中,到目前为止,我还没有找到这样做的方法。
我需要这个的原因是,IMyInterface
的实例尚未创建,绑定发生且对象创建也不是由Unity处理的(我无法随时替换它不久)。
答案 0 :(得分:4)
Unity支持Lazy。您需要将以下扩展名添加到unity:
unityContainer.AddNewExtension<LazySupportExtension>();
然后您可以执行以下操作:
unityContainer.RegisterType<IComponent, Component1>();
var lazyComponent = unityContainer.Resolve<Lazy<IComponent>>();
希望这有帮助。