【发布时间】:2021-10-05 14:32:09
【问题描述】:
我想为我的班级添加一个Lazy。要在Lazy 的初始化方法中访问非静态成员,最佳实践方法(参见https://stackoverflow.com/a/14029443/10406502)是在默认构造函数中定义Lazy。这在我的项目中是不可能的,因为它是一个部分类,并且默认构造函数已经由一些自动生成的代码(实体框架)定义。
有没有办法使用Lazy 访问非静态类成员而不在默认构造函数中实现它?
【问题讨论】:
-
private Lazy<int> lazyGetSum = new Lazy<int>(new Func<int>(() => X + Y)); -
@RobertHarvey 不起作用,因为您无法访问
Func<int>内的非静态成员(在您的示例中)。 -
什么非静态成员?
-
@RobertHarvey 请参阅 OP 中链接的问题。确实如此
new Lazy<int>(() => X + Y)其中X和Y是实例成员。 -
您必须在 Internet 上进行一些探索,但我很确定这是正确的方法。另见entityframework.net/knowledge-base/31793997
标签: c# static lazy-loading