【发布时间】:2015-04-06 21:51:21
【问题描述】:
我正在尝试为缓存类创建一个接口,如下所示:
public interface IDataCacheMember
{
private List<T> _data;
public List<T> Data;
private void RefreshCache();
private List<T> GetData();
}
public class StateMap : IDataCacheMember
{
private List<States> _data;
public List<States> Data
{
get
{
if (_data == null || _data.Count() < 1)
_data = GetData();
return _data;
}
}
private void RefreshCache()
{
_data = GetData();
}
private List<States> GetData()
{
//API Magic to get states
}
private static readonly Lazy<StateMap> lazy =
new Lazy<StateMap>(() => new StateMap());
public static StateMap Instance { get { return lazy.Value; } }
private StateMap()
{
//Set a timer to call RefreshCache() every five minutes
}
}
目标是在网站的多个小型数据集上保存对 API 的调用。这些数据集不需要精确到一分钟。
没有空间使用适当的缓存服务(Redis 等)。
问题是我找不到为_data 和Data 的返回类型定义通用列表的方法。
实现目标的最佳方式是什么?我可以为_data 和Data 提供一个通用的返回类型,还是我应该使用另一种更好的模式?
【问题讨论】:
-
如果您使用的是 .NET 4.0 或更高版本,您可以使用内置的 MemoryCache 类,而无需依赖任何第三方缓存服务。您可以使用Add methods 轻松设置定时到期。
标签: c# .net generics interface