我在嘗試PostSharp的CacheAttribute功能。PostSharp - 動態緩存鍵
以下是我用於爲每個緩存條目生成緩存鍵的方法。
private string BuildCacheKey(Arguments arguments)
{
var sb = new StringBuilder();
sb.Append(_methodName);
foreach (var argument in arguments.ToArray())
{
sb.Append(argument == null ? "_" : argument.ToString());
}
return sb.ToString();
}
下面是我使用的示例類。
class State
{
public string Code { get; set; }
public string Name { get; set; }
}
這需要緩存的方法是:
[Cache]
private static IDictionary<string, string> GetStateRegions(IEnumerable<State> states)
{
//some db call here to retrieve values;
}
這是我如何調用該方法:
IList<State> states = new List<State>();
states.Add(new State {Code = "NM", Name = "New Mexico"});
states.Add(new State {Code = "CA", Name = "California"});
GetStateRegions(states);
的BuildCacheKey方法構建了以下緩存鍵 - 「GetStateRegionsSystem.Collections.Generic.List`1 [ConsoleApplication1.State]」
我希望緩存鍵內置類似於「GetStateRegions [ConsoleApplication1.State]」 - 例如上面的調用「GetStateRegionsNMCA [ConsoleApplication1.State]」狀態碼NM和CA.
什麼是實現這一目標的好方法?也有可能使用不同的邏輯來爲不同的方法構建密鑰(基於方法參數類型)?將不勝感激任何指針/建議。
他需要檢查一種列表或者ICollection –
2011-06-10 23:16:16
是的,我只是改變了它 – 2011-06-10 23:16:32
我會給它一個鏡頭,看看是否有效。 – muruge 2011-06-10 23:38:36