3

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

在 ninject 中,我正在尝试执行的代码如下所示:

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

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

我需要这个的原因是,当时IMyInterface还没有创建 Instance,绑定发生了,Unity 也没有处理对象的创建(我不能很快替换它)。

4

1 回答 1

4

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

unityContainer.AddNewExtension<LazySupportExtension>();

那么您可以执行以下操作:

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

希望这可以帮助。

于 2011-03-22T14:18:44.587 回答