方法

时间:2017-07-12 08:55:45

标签: c# prefetch

我底部有一些方法。我想多次调用此方法,但另外我想调用Session.Prefetch<OpParamDef>() JUST一次。我需要做什么?对此有什么特别的命令吗?我想第一次调用Prefetch

public void method
{
    get
    {
        Session.Prefetch<OpParamDef>();              
        var result = new List<OpParamDef>();
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用Lazy<T>来存储延迟加载的集合。文档为here

基于您的问题的示例用法可能是:

Lazy<List<OpParamDef>> Collection { get; set; } 
//...in your ctor
Collection = new Lazy<List<OpParamDef>>(() => Session.Prefetch<OpParamDef>());

您可以多次访问Collection.Value,但Session.Prefetch<OpParamDef>()仅在第一次调用时使用,然后缓存该初始值设定项的结果。

您甚至可以隐藏属性后面的Value访问者:

public List<OpParamDef> CollectionAsList
{
    get
    {
        return Collection.Value;
    }
}

如果不使用该值,则具有不加载初始化函数的好处。

除此之外,您还可以在任何环境中灵活使用此方法。 (应用程序级别,请求上下文等)