在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