zoukankan      html  css  js  c++  java
  • 打包拆包的使用

    • 在做 Winfrom 的时候遇到这样一个需求,两个页面传一个字典集合给同一个打印界面,但是他们字典集合对应的值都是集合,并且集合类型并不一致,那么如何让这个打印界面来接收值呢?

      思路: 将传的值转换成 object 类型 (任何类型的值都可以转换成 object) 相当于把各式各样的数据打包起来

    然后传到需要的地方后再各自进行类型转换,转换成原本的类型,相当于拆包再来使用

    打包

    //字典集合对象 
      Dictionary<string, List<object>> dictionary = new Dictionary<string, List<object>>();
        List<object> typeList = new List<object>();//声明
       typeList.Add(GetPrintInfo(dataGridView1.Rows[i].Cells));//值(不是object)传入泛型集合是会隐式转化成泛型
      
      //  typeList.ConvertAll(n => (object)n);或者实在不行也可以这样将集合里的值类型转换掉
      
        PrinterPage printerPageForm = new PrinterPage(dictionary,cmbRfidLabelType.SelectedValue.ToString());//这里通过构造函数将值传到打印页面中

    拆包

            /// <summary>
              /// 设备组 初始化打印页面
              /// </summary>
              /// <param name="modelDictionary"></param>
              /// <param name="rfidLabelTypeName"></param>
              public PrinterPage(Dictionary<string, List<object>> modelDictionary, string rfidLabelTypeName)
              {
                  InitializeComponent();
                  RfidLabelTypeName = rfidLabelTypeName;
                  //在构造方法中获取传来的值,同时将字典的值转换成我们需要的类型 OfType<T>() 即可
            List = PintDictionary[rfidLabelTypeName].OfType<AssetGroupPrintViewModel>().ToList();
              }

    巧用构造函数

    咱们可以创建多个不同参数的构造函数,调用构造函数传参会找到对应的构造函数创建对象,有的时候有神效,一般一个页面会有多种传值方式可以尝试这个方法

  • 相关阅读:
    [转]微服务架构
    [转]认识JWT
    [转]win10中安装JDK8以及环境配置
    [转]PHP开发者必须了解的工具—Composer
    [转]php,使用Slim和Medoo搭建简单restful服务
    [转]分别使用Node.js Express 和 Koa 做简单的登录页
    [转]Node.js框架对比:Express/Koa/Hapi
    centos rancher 通过本机 docker images 新增container
    [转]Ubuntu18.04下使用Docker Registry快速搭建私有镜像仓库
    [转]rancher 初步
  • 原文地址:https://www.cnblogs.com/wang-min/p/10334121.html
Copyright © 2011-2022 走看看