通过内核获取延迟实例(Ninject)

时间:2014-05-26 21:11:19

标签: ninject

我使用Ninject代替MEF,我想知道是否可以通过标准内核方法而不是通过[inject]来获取延迟实例。 我需要这个,因为在构建我的应用程序菜单时,我必须传递所有特定的视图模型,然后如果用户已启用该功能将其添加到菜单

由于

1 个答案:

答案 0 :(得分:1)

当然,您可以注入Lazy<T>,只有在您访问Lazy<T>.Value时才会实现该值。 你也可以注入一个Func<T>并用它来创建T(使用func,每次调用都会创建一个新实例)。

当然你也可以做IResolutionRoot.Get<Lazy<T>>()IResolutionRoot.Get<Func<T>>(),但通常这是设计不良(服务定位器)的标志,所以在可行时使用构造函数注入。

编辑:什么时候发生“启用用户”?这是一次性的事吗?之前和之后显示的是什么? 可能还有其他/更好的设计可以实现这一目标,但很难用这些小信息说出来。