Простая реализация C # ASP.NET Cache - PullRequest
6 голосов
/ 17 марта 2010

Мне нужно создать List<object> и кэшировать список, чтобы я мог к нему добавить. Мне также нужно уметь легко сдуть его и воссоздать. Какой простой способ сделать это?

Ответы [ 3 ]

17 голосов
/ 17 марта 2010

Что-то вроде этого возможно?

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");
    }
}

Что касается того, как использовать .....

// 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();
2 голосов
/ 17 марта 2010

Этот урок полезен для меня

Вот образец

List<object> list = new List<Object>();

Cache["ObjectList"] = list;                 // add
list = ( List<object>) Cache["ObjectList"]; // retrieve
Cache.Remove("ObjectList");                 // remove
0 голосов
/ 09 января 2014

Кэшируемые части "Оболочки провайдеров трассировки и кэширования для Entity Framework" , хотя и не простые, но все же являются довольно хорошим обзором некоторых полезных вещей, о которых следует подумать при кэшировании.

В частности, два класса InMemoryCache и AspNetCache и связанные с ними тесты:

Подобно тому, что сделал вопрос, вы можете заключить HttpRuntime.Cache или HttpContext.Current.Items или HttpContext.Current.Cache в реализацию ICache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...