我正在编写一个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
,但我看不出有什么问题。
答案 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表达式推断的那样。