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
                );

posted @ 2010-10-29 17:44  小肖程序  阅读(467)  评论(0编辑  收藏  举报