当我调试我的应用程序时,我发现下面的代码行没有调用我的服务层中的任何方法:
private Lazy<List<userAudit>> lazyList = null;
lazyList = new Lazy<List<userAudit>>(() => client.GetAudit(10).ToList());
并且,我的GetAudit
方法将返回审计对象列表,下面是其定义:
public List<t_user_audit> GetAudit(int id)
{
return _work.GetGenericRepositoryFor<List<userAudit>>().GetByID(id);
}
并且,在上面的定义中,我在GetAudit
方法中插入了一个断点,但是当编译器没有进入断点并且只返回NULL
值时。
我不知道我在哪里犯了错误或代码有什么问题。
我正在关注Can you explain Lazy Loading文章。
答案 0 :(得分:3)
根据documentation到Lazy
Provides support for lazy initialization.
课程的重点是
这是正常的
lazyList = new Lazy<List<userAudit>>(() => client.GetAudit(10).ToList());
不会调用此方法。
但是,如果您使用Value属性
,则会调用它答案 1 :(得分:2)
延迟加载意味着在您需要或使用时获取值
这里
lazyList = new Lazy<List<userAudit>>(() => client.GetAudit(10).ToList());
您只是创建谓词或者您可以为您查询签名意味着方法不会被调用 一旦你像下面提到的那样使用它
var output = lazyList.Value;
方法被调用