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

惰性初始化类型没有公共的无参数类型构造函数

异常,因为注入不会将该方法注入构造函数。我想我必须写一个方法来绑定什么创建一个新的实例。

Lazy<> Ninject Injection

使用Ninject的工厂扩展https://github.com/ninject/ninject.extensions.factory

Bind(typeof (Lazy<IPsoriasisReportUserControl>)).ToMethod(
            ctx => new Lazy<IPsoriasisReportUserControl>(() =>
                  Kernel.Get<IPsoriasisReportUserControl>()));

你需要一个Lazy的默认公共构造函数:

public Lazy() {}