在C#中,是否可以修飾帶註釋的方法以使用方法的返回值填充緩存對象?使用ASP.NET Caching API通過C#中的方法註釋
目前我使用下面的類來緩存數據對象:
public class SiteCache
{
// 7 days + 6 hours (offset to avoid repeats peak time)
private const int KeepForHours = 174;
public static void Set(string cacheKey, Object o)
{
if (o != null)
HttpContext.Current.Cache.Insert(cacheKey, o, null, DateTime.Now.AddHours(KeepForHours), TimeSpan.Zero);
}
public static object Get(string cacheKey)
{
return HttpContext.Current.Cache[cacheKey];
}
public static void Clear(string sKey)
{
HttpContext.Current.Cache.Remove(sKey);
}
public static void Clear()
{
foreach (DictionaryEntry item in HttpContext.Current.Cache)
{
Clear(item.Key.ToString());
}
}
}
的方法我想緩存我這樣做:
[DataObjectMethod(DataObjectMethodType.Select)]
public static SiteSettingsInfo SiteSettings_SelectOne_Name(string Name)
{
var ck = string.Format("SiteSettings_SelectOne_Name-Name_{0}-", Name.ToLower());
var dt = (DataTable)SiteCache.Get(ck);
if (dt == null)
{
dt = new DataTable();
dt.Load(ModelProvider.SiteSettings_SelectOne_Name(Name));
SiteCache.Set(ck, dt);
}
var info = new SiteSettingsInfo();
foreach (DataRowView dr in dt.DefaultView)
info = SiteSettingsInfo_Load(dr);
return info;
}
是否有可能這些問題分開,像這樣:(注意新註釋)
[CacheReturnValue]
[DataObjectMethod(DataObjectMethodType.Select)]
public static SiteSettingsInfo SiteSettings_SelectOne_Name(string Name)
{
var dt = new DataTable();
dt.Load(ModelProvider.SiteSettings_SelectOne_Name(Name));
var info = new SiteSettingsInfo();
foreach (DataRowView dr in dt.DefaultView)
info = SiteSettingsInfo_Load(dr);
return info;
}
筆者從斯科特Hanselman的約AOP播客的啓發。所以驗證控件在MVC中工作,然後如果註釋不做任何事情? – craigmoliver 2010-05-19 21:43:29
註解本身不做任何事情。但驗證框架確實檢查你的屬性具有哪些屬性,並且包含關於如何處理它們的行爲。 (編輯我的帖子澄清。) – Venemo 2010-05-19 22:06:57