带有参数的惰性初始化错误

Lazy initialization error with parameter

我正在编写一个 MVC 互联网应用程序并且有一个关于延迟初始化的问题。

这是我在惰性初始化之前的工作代码:

声明:

private ValidationService validationService;

初始化:

validationService = new ValidationService(genericMultipleRepository);

这是我正在尝试的代码:

声明:

private Lazy<ValidationService> validationService;

初始化:

validationService = new Lazy<ValidationService>(genericMultipleRepository);

这里是错误:

Error 125 The best overloaded method match for 'System.Lazy.Lazy(System.Threading.LazyThreadSafetyMode)' has some invalid arguments

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

lazy 的构造函数需要一个 Func returns 指定的 ValidationService 类型:

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

这相当于:

validationService = new Lazy<ValidationService>
                    ( SomeMethod
                    );

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

请注意,您不能像使用 lambda 表达式推断的那样传递参数 genericMultipleRepository