Вам действительно нужно, чтобы они были удалены из кэша в то время? Или только то, что будущие запросы к кешу для этого элемента должны возвращать нуль через заданное время?
Чтобы сделать первое, вам понадобится какой-то фоновый поток, который периодически очищает кеш. Это будет необходимо, только если вы беспокоитесь о потреблении памяти или о чем-то подобном. Если вы просто хотите, чтобы срок действия данных истек, это было бы легко сделать.
Создать такой класс тривиально.
class CachedObject<TValue>
{
DateTime Date{get;set;}
TimeSpan Duration{get;set;}
TValue Cached{get;set;}
}
class Cache : Dictionary<TKey,TValue>
{
public new TValue this(TKey key)
{
get{
if (ContainsKey(key))
{
var val = base.this[key];
//compare dates
//if expired, remove from cache, return null
//else return the cached item.
}
}
set{//create new CachedObject, set date and timespan, set value, add to dictionary}
}