• 方法调方法(委托方式)


    具有功能的实现方法,这个方法是一个吧数据插入到数据库然后再插入到listview的方法,使用for循环不断的调用这个方法进行插入:

     /// <summary>
            /// 获得Excel的名称和代号
            /// </summary>
            private void GetData(string name, string prefix)
            {
                try
                {
                    //标记资料序号
                    int num = 0;
                    AMCustomDatumCategoryGroup CDCG = this.advTree.SelectedNode.Tag as AMCustomDatumCategoryGroup;
                    AMDatumCategory datumCategory = new AMDatumCategory();
                    datumCategory.Name = name;
                    datumCategory.Prefix = prefix;
    
                    if (CDCG != null)
                    {
                        datumCategory.CDCG_ID = CDCG.CDCG_Id;
                    }
    
                    //插入数据库,如果Excel表出现重复数据,就跳过这一条数据
                    try
                    {
                        //获取标识ID
                        datumCategory.DatumCategoryId = ApplicationEx.AdministrationInterface.CreateDatumCategory(this.mCategory, datumCategory);
                    }
                    catch (InvalidDatumCategoryException)
                    {
                        return;
                    }
    
                    //插入listview
                    ListViewItem item = new ListViewItem();
                    item.ImageIndex = 0;
                    item.Tag = datumCategory;
                    num++;
                    item.SubItems.Add((num + this.listView.Items.Count + 1).ToString());
                    item.SubItems.Add(datumCategory.Name);
                    item.SubItems.Add(datumCategory.Prefix);
                    item.SubItems.Add(datumCategory.Disabled ? "禁用" : "启用");
                    item.SubItems.Add(datumCategory.CDCG_ID.ToString());
                    if (listView.InvokeRequired)
                    {
                        listView.Invoke(new Action<ListViewItem>(s => { this.listView.Items.Add(s); }), item);
                    }
                    else
                    {
                        this.listView.Items.Add(item);
                    }
                }
                catch (Exception ex)
                {
                    ApplicationEx.ShowErrorMessageBox(ex);
                }
            }

    以这个方法作为参数进行调用的写法:

            /// <summary>
            /// 接收类的其他参数值的委托,即,需要先写一个和方法签名相同的
           ///参数
            /// </summary>
            public delegate void CreateDatumDelegate(string datum,string prefix);    
    
    //然后就像变量传参一样先设置好参数的类型,就是这个委托的类型
    public ImpOrExpDatum(string filePath, CreateDatumDelegate CreateDatumMethod) 
            {
                this.filePath = filePath;
                this.CreateDatumMethod = CreateDatumMethod;
            }
    //最后是调用这个方法传入参数
     this.CreateDatumMethod(workbook.Worksheets[i].Cells[j + 2, 0].StringValue, workbook.Worksheets[i].Cells[j + 2, 1].StringValue);

    调用这个方法,将这个方法当做一个参数

     ImpOrExpDatum frm = new ImpOrExpDatum(dialog.FileName, GetData);

     它的大体流程是将委托的方法作为参数传入一个方法——这个方法带着一个和传入方法的类型一样的参数——这个方法里面有传入方法的传参调用——传入参数给实现的方法,不懂得小伙伴可以参考

    http://www.cnblogs.com/xiaofengfeng/archive/2011/12/02/2271732.html

    这个里面的代码复制粘贴调试查看代码的走向流程,另外所有的方法都是要返回到最后调用它的那个位置的,不管执行的内容是什么

  • 相关阅读:
    k8s资源清单创建pod
    Nginx的应用之动静分离
    Nginx的应用之虚拟主机
    Nginx的应用之安装配置
    k8s 基于NFS部署storageclass pv自动供给
    Helm入门
    k8s Pod的自动水平伸缩(HPA)
    k8s资源指标API及metrics-server资源监控
    k8s的资源限制及资源请求
    k8s的高级调度方式
  • 原文地址:https://www.cnblogs.com/llcdbk/p/4600411.html
Copyright © 2020-2023  润新知