Lazy<> Ninject Injection
本文关键字:Injection Ninject gt Lazy lt | 更新日期: 2023-09-27 18:17:35
我使用ninject框架。在我的代码中有一个Lazy对象。我可以创建一个实例,但是当我调用value属性时,我得到了一个异常。
private Lazy<IPsoriasisReportUserControl> psoriasisReportUserControl;
[Inject]
public Lazy<IPsoriasisReportUserControl> PsoriasisReportUserControl
{
get { return psoriasisReportUserControl; }
set { psoriasisReportUserControl = value; }
}
I got
惰性初始化类型没有公共的无参数类型构造函数
异常,因为注入不会将该方法注入构造函数。我想我必须写一个方法来绑定什么创建一个新的实例。
使用Ninject的工厂扩展https://github.com/ninject/ninject.extensions.factory
Bind(typeof (Lazy<IPsoriasisReportUserControl>)).ToMethod(
ctx => new Lazy<IPsoriasisReportUserControl>(() =>
Kernel.Get<IPsoriasisReportUserControl>()));
你需要一个Lazy的默认公共构造函数:
public Lazy() {}