zoukankan      html  css  js  c++  java
  • 委托和匿名委托

    只讲实例:

    委托的目的就是提高代码的内聚降低耦合度

        /// <summary>
            /// 获取json格式
            /// </summary>
            /// <returns></returns>

     public JsonResult getActionJson()
            {
                JsonResult json = new JsonResult();
                string Str_info=Request["Str_info"].ToString();//所有的信息字段
                List<dynamic> list = new List<dynamic>();//获取list
                getActionList glist = _getList_ZXSearch;
               list= _getActionList(Str_info, glist);
               json.Data = list;
               json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
               return json;
            }

         /// <summary>
            /// 声明获取list列表
            /// </summary>
            /// <param name="_Code"></param>
            /// <param name="Str_info"></param>
            /// <returns></returns>

      public  delegate List<dynamic> getActionList(string Str_info);

      public List<dynamic> _getActionList( string Str_info, getActionList list) {
               return  list.Invoke(Str_info);
            } 

     /// <summary>
            /// 装箱查询
            /// </summary>
            /// <param name="_Code">获取字段的值</param>
            /// <param name="Str_info">所有的信息字段</param>
            /// <returns></returns>
            public List<dynamic> _getList_ZXSearch(string Str_info)
            {
                DataTable dt = null;
                string sql = " select a.OrdID,a.C,a.K,a.G,a.Weight,a.batchID,a.boxID,a.isout from OrderBox a inner join  (select ProjSys from ProjDetail  where ProjPact='" + Str_info.Split(',')[0] + "' or ProjPact0='" + Str_info.Split(',')[0] + "') b on a.ProjSys=b.ProjSys  ";
                dt = getDt(sql);
                List<dynamic> list = new List<dynamic>();
                foreach (DataRow dr in dt.Rows)
                {
                    list.Add(new { 产品编号 = dr["OrdID"], 箱长 = dr["C"], 箱宽 = dr["K"], 箱高 = dr["G"], 重量 = dr["Weight"], 批次 = dr["batchID"], 箱号 = dr["boxID"] });
                }
                return list;

            }

     /// <summary>
            /// 获取table
            /// </summary>
            /// <param name="sql"></param>
            /// <returns></returns>
            public DataTable getDt(string sql)
            {
                DataTable dt = null;
                try
                {
                   dt= FXSmart.KST.DAL.SqlHelper.GetDS(sql).Tables[0];
                }
                catch (Exception ex) {
                    throw ex;
                }
                return dt;
            }

    顾名思义,这个方法就是定义一个方法,把方法当参数传进去然后指向特定的方法。

    下面是匿名委托,相同的代码进行改造。这里稍微有点改动。

       /// <summary>
            /// 获取json格式
            /// </summary>
            /// <returns></returns>

     public JsonResult getActionJson()
            {
                JsonResult json = new JsonResult();
                string Str_info=Request["Str_info"].ToString();//所有的信息字段
                List<dynamic> list = new List<dynamic>();//获取list
              list=   getActionList glist=new getActionList(string Str_info) {

           DataTable dt = null;
                string sql = " select a.OrdID,a.C,a.K,a.G,a.Weight,a.batchID,a.boxID,a.isout from OrderBox a inner join  (select ProjSys from ProjDetail  where ProjPact='" + Str_info.Split(',')[0] + "' or ProjPact0='" + Str_info.Split(',')[0] + "') b on a.ProjSys=b.ProjSys  ";
                dt = getDt(sql);
                List<dynamic> list = new List<dynamic>();
                foreach (DataRow dr in dt.Rows)
                {
                    list.Add(new { 产品编号 = dr["OrdID"], 箱长 = dr["C"], 箱宽 = dr["K"], 箱高 = dr["G"], 重量 = dr["Weight"], 批次 = dr["batchID"], 箱号 = dr["boxID"] });
                }
                return list;

    }
          
               json.Data = list;
               json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
               return json;
            }

     public  delegate List<dynamic> getActionList(string Str_info);

    这里已经简单了一些,下面更加的简化:

    /// <summary>
            /// 获取json格式
            /// </summary>
            /// <returns></returns>

     public JsonResult getActionJson()
            {
                JsonResult json = new JsonResult();
                string Str_info=Request["Str_info"].ToString();//所有的信息字段
                List<dynamic> list = new List<dynamic>();//获取list
              list=   getActionList glist=>(string Str_info) {

           DataTable dt = null;
                string sql = " select a.OrdID,a.C,a.K,a.G,a.Weight,a.batchID,a.boxID,a.isout from OrderBox a inner join  (select ProjSys from ProjDetail  where ProjPact='" + Str_info.Split(',')[0] + "' or ProjPact0='" + Str_info.Split(',')[0] + "') b on a.ProjSys=b.ProjSys  ";
                dt = getDt(sql);
                List<dynamic> list = new List<dynamic>();
                foreach (DataRow dr in dt.Rows)
                {
                    list.Add(new { 产品编号 = dr["OrdID"], 箱长 = dr["C"], 箱宽 = dr["K"], 箱高 = dr["G"], 重量 = dr["Weight"], 批次 = dr["batchID"], 箱号 = dr["boxID"] });
                }
                return list;

    }
          
               json.Data = list;
               json.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
               return json;
            }

     public  delegate List<dynamic> getActionList(string Str_info);

  • 相关阅读:
    后端结对编程报告(2018.6.6)
    Burn Down Chart(2018.6.4~2018.6.10)
    C#多线程List的非线程安全性
    C#泛型参数多线程与复杂参数多线程
    Java学习之App开发公司手机端设想
    Java学习之SpringBoot整合SSM Demo
    Java学习之Mysql结构优化
    Java学习之Dubbo+ZooKeeper分布式服务Demo
    C# 面向切面编程--监控日志记录方案
    C# 通用类型转换方法
  • 原文地址:https://www.cnblogs.com/CarzySunshine/p/6283268.html
Copyright © 2011-2022 走看看