首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

善用匿名函數簡化快取存取模式(一):Lambda 宣告快取與資料來源委派

     編輯:關於C語言

Lambda 直接建立快取實例

protected static CacheManager<Company> companyCache =
    new CacheManager<Company>(new SmsDatabaseCache<Company>(), key =>
    {
        return SmsDatabase.Instance.Context.Company
            .Where(c => c.ShortNumber == (string)key).SingleOrDefault();
    });

SmsDatabaseCache 整合 LinqContext 生命週期

public class SmsDatabaseCache<TData> : ICache<TData>
{
    Dictionary<object, TData> cache = new Dictionary<object, TData>();
    public SmsDatabaseCache()
    {
        SmsDatabase.Instance.PreDisposing += (s, e) => cache.Clear();
    }
    public TData Get(object key) => cache[key];
    public void Set(object key, TData data) => cache[key] = data;
}

Context 釋放時自動清空快取,避免資料不一致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved