简单的C#ASP.NET缓存实现

Bri*_*man 6 c# asp.net caching

我需要建立一个List<object>并缓存列表并能够附加到它.我还需要能够轻松地将其吹走并重新创建它.实现这个目标的简单方法是什么?

jes*_*vin 17

也许这样的事情?

using System;
using System.Collections.Generic;
using System.Web;

public class MyListCache
{
    private List<object> _MyList = null;
    public List<object> MyList {
        get {
            if (_MyList == null) {
                _MyList = (HttpContext.Current.Cache["MyList"] as List<object>);
                if (_MyList == null) {
                    _MyList = new List<object>();
                    HttpContext.Current.Cache.Insert("MyList", _MyList);
                }
            }
            return _MyList;
        }
        set {
            HttpContext.Current.Cache.Insert("MyList", _MyList);
        }
    }

    public void ClearList() {
        HttpContext.Current.Cache.Remove("MyList");
    }
}
Run Code Online (Sandbox Code Playgroud)

至于如何使用.....

// Get an instance
var listCache = new MyListCache();

// Add something
listCache.MyList.Add(someObject);

// Enumerate
foreach(var o in listCache.MyList) {
  Console.WriteLine(o.ToString());
}  

// Blow it away
listCache.ClearList();
Run Code Online (Sandbox Code Playgroud)

  • 嗯...可服务.但我会做一些改变.首先,我总是会返回一个有效的列表.如果它不存在,则创建一个新的空集合并对其进行缓存,而不是仅返回Cache ["MyList"]中可能为null的任何内容. (2认同)