我有一个C#网络应用程序的用户模型,我在控制器中填充了各种属性,如用户名等。
我只想知道是否有一个地方我可以实例化这个类一次,然后在多个控制器中重复使用它,因为我现在已经设置好了,所以每个控制器创建一个新的User实例添加相关数据它并将它传递给它的视图,但这看起来效率不高!
答案 0 :(得分:1)
您可以使用MemoryCache
缓存数据:
public class InMemoryCache: ICacheService
{
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
T item = MemoryCache.Default.Get(cacheKey) as T;
if (item == null)
{
item = getItemCallback();
MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
}
return item;
}
}
interface ICacheService
{
T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}
用法:var user=cacheService.GetOrSet("User", ()=>Repository.GetUser())
或实现CacheRepository模式(CacheRepo pattern description)