带参数的延迟初始化错误

时间:2015-03-17 09:57:09

标签: c# class parameters lazy-initialization

我正在编写一个MVC互联网应用程序,并对延迟初始化有疑问。

以下是延迟初始化之前的工作代码:

声明:

private ValidationService validationService;

初​​始化:

validationService = new ValidationService(genericMultipleRepository);

以下是我正在尝试的代码:

声明:

private Lazy<ValidationService> validationService;

初​​始化:

validationService = new Lazy<ValidationService>(genericMultipleRepository);

这是错误:

  

错误125最佳重载方法匹配   &#39; System.Lazy.Lazy(System.Threading.LazyThreadSafetyMode)&#39;   有一些无效的   参数

我查看了Lazy<T> constructor documentation,但我看不出有什么问题。

1 个答案:

答案 0 :(得分:2)

lazy的构造函数需要Func返回指定的ValidationService类型:

validationService = new Lazy<ValidationService>
                    ( () => new ValidationService(genericMultipleRepository)
                    );

这相当于:

validationService = new Lazy<ValidationService>
                    ( SomeMethod
                    );

private ValidationService SomeMethod()
{
    return new ValidationService(this.genericMultipleRepository);
}

请注意,您无法传递参数genericMultipleRepository,就像使用lambda表达式推断的那样。