C#参数委托
在有时需要对代码做较强的适应性时(比如根据某些条件返回不同的数据库映射类型,其中操作过程中涉及将部分DAL代码分离出来,这样在Bll调DAL中的代码时 ,就需要DAL中的代码能过具有足够的灵活性)
CODE[DAL]:
//定义一个 待处理的类似DAL数据查询代码 的委托
public delegate V ToDo<V>(out int Count);
//被调用的含有委托参数的的方法 ,其中定义为处理泛型
public static TData Get<TData>(string cacheKey, ToDo<TData> cacheGetter, out int Count)
{
TData data;
object objData = FrameworkCache.SMCache.GetCacheService().RetrieveObject(cacheKey);
data = (objData == null) ? default(TData) : (TData)objData;
if (objData != null)
{
Count = int.Parse(FrameworkCache.SMCache.GetCacheService().RetrieveObject(cacheKey + "Count").ToString());
return data;
}
else
{
data = cacheGetter(out Count);
return data;
}
}
BLL:
//数据查询字符串
stirng cacheKey ;
return CacheHelper.Get<IList<Model.Tbl_News>>(
cacheKey,
delegate(out int Count1)
{
IList<Model.Tbl_News> list = GetList(PageSize, PageIndex, Sql, out Count1, "", " AddDate desc,CreateTime desc");
return list;
},
out Count
);