方法中的一次预取
One prefetch in method
我有一些方法在底部。我想多次调用此方法,但另外我只想调用 Session.Prefetch<OpParamDef>()
一次。我需要做什么?有什么特殊的命令吗?我想第一次调用 Prefetch
。
public void method
{
get
{
Session.Prefetch<OpParamDef>();
var result = new List<OpParamDef>();
}
}
您可以考虑使用 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;
}
}
这样做的好处是,如果不使用该值,则根本不会加载初始化函数。
除此之外,您还可以在任何上下文中灵活地使用此方法。 (应用程序级别、请求上下文等)
我有一些方法在底部。我想多次调用此方法,但另外我只想调用 Session.Prefetch<OpParamDef>()
一次。我需要做什么?有什么特殊的命令吗?我想第一次调用 Prefetch
。
public void method
{
get
{
Session.Prefetch<OpParamDef>();
var result = new List<OpParamDef>();
}
}
您可以考虑使用 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;
}
}
这样做的好处是,如果不使用该值,则根本不会加载初始化函数。
除此之外,您还可以在任何上下文中灵活地使用此方法。 (应用程序级别、请求上下文等)