精华内容
下载资源
问答
  • 一个订单有订单状态和支付状态,用数字来表示状态信息(采用枚举类型来对应储存,采用code和message),但是在前端展示一个订单信息时需要看见状态数字对应的信息,也就是枚举中的message,并不需要展示code。...

    一个订单有订单状态和支付状态,用数字来表示状态信息(采用枚举类型来对应储存,采用code和message),但是在前端展示一个订单信息时需要看见状态数字对应的信息,也就是枚举中的message,并不需要展示code。
     按照以前的思路,我可以采用循环判断的方式,如果传到前端的实体类中状态为存在的code,那么就将相关字段手动改为对应message。这有很大的缺点,如果状态有很多,那么转换起来非常麻烦。

    有一种方便的做法,通过反射到枚举对象:

    定义一个CodeEnum接口,所有要反射得到message的枚举类都要implements 实现这个接口

    public interface CodeEnum {
        Integer getCode();
    }

    枚举类这样写

    @Getter
    public enum PaymentTypeEnum implements CodeEnum{
        PAY_ONLINE(1, "在线支付");
        private Integer code;
        private String message;
     
        PaymentTypeEnum(Integer code, String message) {
            this.code = code;
            this.message = message;
        }
    }

    Enum工具类

    public class EnumUtil {
        //返回的对象实现CodeEnum接口    
        public static <T extends CodeEnum> T getByCode(Class<T> enumClass, Integer code) {
            for (T each : enumClass.getEnumConstants()) {
                if(each.getCode()==code){
                    return each;
                }
            }
            return null;
        }
    }

    测试,使用方法

    PaymentTypeEnum paymentTypeEnum= EnumUtil.getByCode(PaymentTypeEnum.class,1);
    String message=paymentTypeEnum.getMessage();

     

    展开全文
  • Object.keys() 方法会返回一个由给定对象的所有枚举自身属性的属性名组成的数组。 * 数组属性名的排列顺序和使用for-in循环遍历该对象时返回的顺序一致。 **主要区别是 for-in 还会遍历出一个对象从其原型...
    Object.keys() 方法会返回一个由给定对象的所有可枚举自身属性的属性名组成的数组。

    * 数组中属性名的排列顺序和使用for-in循环遍历该对象时返回的顺序一致。
    **主要区别是 for-in 还会遍历出一个对象从其原型链上继承到的可枚举属性。

    [b]语法:Object.keys(obj)[/b]

    var arr = ["a", "b", "c"];
    alert(Object.keys(arr)); // 弹出"0,1,2"

    var obj = { "name" :"wjy","age": 26, "sex":"female"};
    alert(Object.keys(obj)); // 弹出"name,age,sex"

    兼容那些没有原生支持Object.key方法的JavaScript环境:
    [url]https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys[/url]

    浏览器兼容性:
    Firefox Chrome IE Opera Safari
    4 (2.0) 5 9 12 5
    展开全文
  • 一看是调用WebService时出的错,问题出现在调用的客户端:...View Code 1 /// <summary> 2 /// 返回所有游戏服务器列表,包括不能使用的服务器 3 /// 需求:其他系统,需要获取游戏的服务器信息 4 ...

    一看是调用WebService时出的错,问题出现在调用的客户端:(因为没有服务器那边的错误,或者说现在还没有成功请求服务器)。服务器那边的源代码:

    View Code
     1  /// <summary>
     2         /// 返回所有游戏服务器列表,包括不能使用的服务器
     3         /// 需求:其他系统,需要获取游戏的服务器信息
     4         /// </summary>
     5         /// <param name="game">游戏</param>
     6         /// <returns>服务器列表</returns>
     7         [Obsolete("WebService传递枚举不合适")]
     8         [WebMethod(Description = "返回所有游戏服务器列表,包括不能使用的服务器")]
     9         public List<GameServerInfo> GetAllServerList(GameCategory game)
    10         {
    11             try
    12             {
    13                 GameServer gameServer = new GameServer(game);
    14 
    15                 List<GameServerInfo> gameServerList = gameServer.GetAllServerList() as List<GameServerInfo>;
    16 
    17                 TranServerCode(game, gameServerList);
    18                 return gameServerList;
    19             }
    20             catch
    21             {
    22                 return new List<GameServerInfo>();
    23             }
    24         }

     

     

    原因嘛,是我更新过GameCategory这个枚举,服务端的GameCategory已经是最新的;客户端是不是最新呢?当然不是,看看.net 为我们生成的代理类中的GameCategory:

     1     /// <remarks/>
     2     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "2.0.50727.3082")]
     3     [System.SerializableAttribute()]
     4     [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://service.gyyx.cn/")]
     5     public enum GameCategory {
     6         
     7         /// <remarks/>
     8         Virtual,
     9         
    10         /// <remarks/>
    11         Seal,
    12         
    13         /// <remarks/>
    14         WenDao,
    15         
    16         /// <remarks/>
    17         ShenJie,
    18         
    19         /// <remarks/>
    20         Iuiuu,
    21         
    22         /// <remarks/>
    23         ZhenBa,
    24         
    25         /// <remarks/>
    26         ChuangShi,
    27         
    28         /// <remarks/>
    29         FW,
    30         
    31         /// <remarks/>
    32         XiYou,
    33         
    34         /// <remarks/>
    35         Kusomania,
    36         
    37         /// <remarks/>
    38         Chin,
    39         
    40         /// <remarks/>
    41         XuanWu,
    42         
    43         /// <remarks/>
    44         WulinHegemony,
    45         
    46         /// <remarks/>
    47         Dragon,
    48         
    49         /// <remarks/>
    50         ShuShan,
    51         
    52         /// <remarks/>
    53         Ad,
    54         
    55         /// <remarks/>
    56         Sm,
    57         
    58         /// <remarks/>
    59         MythsHeroes3,
    60         
    61         /// <remarks/>
    62         AsktaoLegend,
    63     }

     

    我当前请求的枚举值是叫 TianMo;发现里面没有吧?这个大家都知道,更新WebService一下引用就行了。

     

    而我想说的重点不在于此问题本身,在于WebService参数和返回值的问题。

    如果参数是枚举值、复杂的Class,哪一天我们改变一个枚举、一个属性值,就要对所有可以涉及到的地方进行更新引用;如果是简单类型,只要不改变参数的名字,是可以不更新的。

     

    此外:对于枚举,引用的WebService还有一个更要命的特性:wsdl生成的代理类(微软自动给你生成的代理类),会把枚举值从0,1,2...重新赋值,如果你的枚举值本身是不连续的,那就会变成连续的错误的值!!

    转载于:https://www.cnblogs.com/sgang/archive/2012/09/17/2689168.html

    展开全文
  • 摘要:C#源码,文件操作,文件夹  C#获取指定文件夹下的所有文件夹,获取...与<a href="http://www.codefans.net/soft/10648.shtml" target="_blank">C# 列举指定文件夹所有文件,枚举文件夹是十分相似的实例小程序。
  • 可以获取所有值</li><li>数据库模型添加 trait 类,方法:getOptions(获取所有键值对),getOption(获取单状态),在配合 getXxxAttrubute() 就可以方便的获取...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例141 删除文件夹中所有文件 202 实例142 创建磁盘索引文件 203 实例143 控制台记录器 205 实例144 防止创建多个字符串对象 206 实例145 合并多个文本文件 207 实例146 对大文件实现分割处理 208 实例147 将分割后...
  • 原文地址::... 相关文章 1、串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法----http://www.cnblogs.com/code7854/p/4287650.html 开发工具:visual studio

    原文地址::http://blog.chinaunix.net/uid-20672257-id-2973926.html


    相关文章

    1、串口编程-枚举遍历串口、获取PC所有串口名称、遍历注册表项、RegEnumValue用法----http://www.cnblogs.com/code7854/p/4287650.html



    开发工具:visual studio 2010
    本机可用串口信息如下:
    1 、查询注册表 
    查询注册表的方法是比较常见的方法,通过查看“ HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM ”项来获取串口信息。该方法就是使用编程方法读取注册表内信息,相当于用户通过在运行框内输入 ”regedit” (或 regedit32 )直接打开注册表。源代码如下:
     int i = 0; 
     CHAR Name[25]; 
     UCHAR szPortName[25]; 
     LONG Status; 
     DWORD dwIndex = 0; 
     DWORD dwName; 
     DWORD dwSizeofPortName; 
     DWORD Type;
     HKEY hKey; 
     CString   strSerialList[256];  // 临时定义 256 个字符串组,因为系统最多也就 256 个 
     LPCTSTR data_Set="HARDWARE\\DEVICEMAP\\SERIALCOMM\\";
     dwName = sizeof(Name); 
     dwSizeofPortName = sizeof(szPortName);
     //long ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKey)); 
     long ret0 = RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKey); //打开一个制定的注册表键,成功返回ERROR_SUCCESS即“0”值
     if(ret0 == ERROR_SUCCESS) 
     {
      do 
      { 

       Status = RegEnumValue(hKey, dwIndex++, Name, &dwName, NULL, &Type, szPortName, &dwSizeofPortName);//读取键值 
       if((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA)) 
       { 
        strSerialList[i] = CString(szPortName);       // 串口字符串保存 
        printf("serial:%s\n",strSerialList[i]);
        i++;// 串口计数 
       } 
       //每读取一次dwNamedwSizeofPortName都会被修改 
      //注意一定要重置,否则会出现很离奇的错误,本人就试过因没有重置,出现先插入串口号大的(如COM4),再插入串口号小的(如COM3),此时虽能发现两个串口,但都是同一串口号(COM4)的问题,同时也读不了COM大于10以上的串口 
       dwName = sizeof(Name); 
       dwSizeofPortName = sizeof(szPortName); 
      } while((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA)); 
     
      RegCloseKey(hKey); 
     }
    调试输出信息如下:
    该方法在 1ms内即可完成查找;同时也可解决 usb 转串口设备的问题,比较实用,唯一缺点是,如果用户在装某些软硬件时在注册表中注册了虚拟串口之类的,用此法枚举得到的该类串口实际上是不能当串口用的。 
    2、使用 SetupAPI 函数集的方法
    此种方法是最简单的方法,之所以简单是因为已经有人将复杂的代码封装起来了,只需像傻子一样调用就可以完成工作了,具体的说明请看 http://www.codeguru.com/Cpp/W-P/system/hardwareinformation/article.php/c5721/ ,使用该方法要在你的程序中,添加“ EnumSerial.cpp ”和“ EnumSerial.h ”两个文件,并且将 Setupapi.lib 包含进你的工程,方法在项目属性-配置属性-连接器-输入-附加依赖项中添加setupapi.lib,然后在EnumSerial.cpp中添加包含"setupapi.h" ,你的应用程序添加包含EnumSerial.h头文件就行了,
    下面给出调用该方法的例子代码:
     
           int m_nSerialPortNum(0);// 串口计数 
           CString          strSerialList[256];  // 临时定义 256 个字符串组 
           CArray<SSerInfo,SSerInfo&> asi; 
           EnumSerialPorts(asi,TRUE);// 参数为 TRUE 时枚举当前可以打开的串口, 
    // 否则枚举所有串口 
           m_nSerialPortNum = asi.GetSize(); 
           for (int i=0; i<asi.GetSize(); i++) 
           { 
                  CString str = asi[i].strFriendlyName; 
         printf("serialinfo:%s\n",str);
           }
    调试输出信息如下:
    该方法查找一个串口就要 15ms 左右,但可以看到该方法获取的串口完完全全就是硬件设备管理器中的串口。
    3、使用 EnumPort 方法
    该方法调用 EnumPort () API 函数,该函数本身就是枚举电脑端口用的,它枚举的并非只有串口,所以必须对其所得串口进行分析选择,使用这种方法要在源码中添加#include <winspool.h>头文件
    以下是源代码:
           int i=0;
           int m_nSerialPortNum(0);// 串口计数 
           CString          strSerialList[256];  // 临时定义 256 个字符串组 
           LPBYTE pBite  = NULL; 
           DWORD pcbNeeded = 0;  // bytes received or required 
           DWORD pcReturned = 0;  // number of ports received 
           m_nSerialPortNum = 0;
           // 获取端口信息,能得到端口信息的大小 pcbNeeded 
           EnumPorts(NULL, 2, pBite, 0, &pcbNeeded, &pcReturned); 
           pBite = new BYTE[pcbNeeded]; 
           // 枚举端口,能得到端口的具体信息 pBite 以及端口的的个数 pcReturned
           EnumPorts(NULL, 2, pBite, pcbNeeded, &pcbNeeded, &pcReturned); 
           PORT_INFO_2 *pPort; 
           pPort = (PORT_INFO_2*)pBite; 
           for ( i = 0; i < pcReturned; i++) 
           { 
                  CString str = pPort[i].pPortName; 
         printf("hardwareinfo:%s\n",str);
                  // 串口信息的具体确定 
                  if (str.Left(3) == "COM") 
                  {                   
                         strSerialList[m_nSerialPortNum] = str.Left(strlen(str) - 1); 
                         //CString temp = str.Right(strlen(str) - 3);// 下面两行注释获取串口序号用 
                         //m_nSerialPortNo[m_nSerialPortNum] = atoi(temp.Left(strlen(temp) - 1)); 
          printf("serialinfo:%s\n",strSerialList[m_nSerialPortNum]);
                         m_nSerialPortNum++;       
          
                  } 
           }
    调试输出信息如下:
    可以看出该方法除了串口,还可以枚举所有的并口和打印机等接口,而且能找到虚拟串口(这些串口有些未使用时,在注册表和硬件设备管理器中是不能取得的)。但是该方法稍微耗时些,大概需要几十 ms ,主要问题是该方法有些 usb 串口并不能查到,系统中没有的串口它都例出来了,所以该方法并不可靠。
    4、依次打开串口的方法
    该方法就是中规中矩的依次打开串口,看打开是否成功来判断串口的有无,一般查找一个串口就要 15ms 左右
    以上方法个人觉得可取的是第一、二种方法。最可靠的是第二种方法。




    展开全文
  • 在.NET FrameworkSystem.IO命名空间包含允许对数据流和文件进行同步和...1.通过递归调用复制目录及其子目录所有文件 View Code 2.获取目录特定匹配模式的文件列表 View Code 3.使用枚举目录和文件  从.NET ...
  • 本文所有示例代码或Demo可以在此获取:https://github.com/WillieWangWei/SampleCode_GPUImage2_FilterList.git 如果本文对你有所帮助,请给个Star?...本篇枚举GPUImage2内置滤镜所有的色彩调校类别,并对其
  • 如果使用<code>defer</code>或<code>async</code>请将Script标签放到<code>head</code>标签,以便让浏览器更早地发现资源并在后台线程解析并开始加载JS。 <h3>4.2 使用<code>Intersection Observer</code>...
  • 在这个例子全局环境包含了两个对象(全局环境的变量对象不算),window.wow和window.message,而这个message函数又包含了两个对象,它自己的变量对象(其中定义了...
  • 循环将迭代对象的所有枚举属性和从它的构造函数的 prototype 继承而来的(包括被覆盖的内建属性)。 我们举个简单的例子: <pre><code> javascript var obj = {name: 'hanzichi', ...
  • Symbol对象是什么

    2020-12-27 09:27:49
    得到一个所有这个对象的symbol属性名的数组。 <p></p><pre><code>javascript const sym1 = Symbol('1'); const sym2 = Symbol('2'); const obj = { <p>} const ary = ...
  • 遗传算法与粒子群算法的实现

    热门讨论 2013-09-04 17:22:43
    Domain是遗传算法求解中所有问题域必须实现的接口。 EncodingType是一个表明染色体编码类型的枚举,包括BINARY(二进制),REAL(实数),INTEGER(整型)。 Factor是交叉概率和变异概率的封装。 IFactorGenerator参数...
  • Swift 5 枚举冻结 (iWeslie 翻译) Swift 里的强制 @inline 注解 (iWeslie 翻译) Swift 代码格式化 (iWeslie 翻译) 为你的 iOS App 构建分离测试 (iWeslie 翻译) 所有 iOS 译文>> 前端 2019 前端...
  • <div><p>几乎所有使用Vue的开发者都知道,Vue的双向绑定是通过Object.defineProperty()实现的,也知道在getter收集依赖,在setter通知更新。 那么除了知道getter和setter之外,Object....
  •  过滤工具条,列表框支持输入过程的内容过滤功能,可以将列表框内容限制为公共方法、资源、枚举等。  支持单词首字母缩写,输入一个缩写,Visual Assist X 将自动查找您所需要的符号。  速记,无需输入整个单词...
  • asp.net知识库

    2015-06-18 08:45:45
    在Asp.net如何用SQLDMO来获取SQL Server的对象信息 使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和...
  • redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 23、EJB与JAVA BEAN的区别?  Java Bean 是可...
  • 将 b 所有的键值对都添加到 a 上面去,返回 a,如何写这个方法?恩,应该不难,刷刷刷写下如下代码: <pre><code> javascript function extend(a, b) { for (var key in b) a...
  • java 面试题 总结

    2009-09-16 08:45:34
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。 20、EJB与JAVA BEAN的区别? Java Bean 是可复用...
  • 在一小时内学会 C#(txt版本)

    热门讨论 2009-08-19 18:09:37
    C# 中所有内容都打包在类中,而所有的类又打包在命名空间中(正如文件存与文件夹中)。和 C++ 一样,有一个主函数作为你程序的入口点。C++ 的主函数名为 main,而 C# 中是大写 M 打头的 Main。 类块或结构定义之后...
  • Fragment 开启Activity带requestCode,开启的Activity关闭后,不会回调Fragment的onActivityResult。只会调用Fragment 所在Activity的onActivityResult。 多fragment单activity拦截器不管用,难道只能用于拦截...
  • c# 加密和解密相关代码

    热门讨论 2011-09-06 11:04:59
    i++) //遍历字符串所有字符,只能加密字符串,无法加密汉字 { tem_Character = System.Convert.ToChar(InputText.Substring(i, 1)); //获取字符串指定的字符 UnicodeChar = (int)tem_Character; //获取当前...
  • Visual C++ 2008入门经典--详细书签版

    热门讨论 2013-02-02 16:07:15
    2.9.6 C++/CLI枚举 90 2.10 小结 94 2.11 练习题 95 第3章 判断和循环 97 3.1 比较数据值 97 3.1.1 if语句 98 3.1.2 嵌套的if语句 99 3.1.3 扩展的if语句 101 3.1.4 嵌套的if-else语句 103 3.1.5 逻辑...
  • 2.9.6 C++/CLI枚举 90 2.10 小结 94 2.11 练习题 95 第3章 判断和循环 97 3.1 比较数据值 97 3.1.1 if语句 98 3.1.2 嵌套的if语句 99 3.1.3 扩展的if语句 101 3.1.4 嵌套的if-else语句 103 3.1.5 逻辑...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。此语句的形式如下: foreach (type identifier in expression) statement 若要循环访问集合,集合必须满足特定的...
  • 1.1.6 要点6:ASP.NET支持所有的浏览器 1.1.7 要点7:ASP.NET易于部署和配置 1.2 ASP.NET的演变 1.2.1 ASP.NET1.0和ASP.NET1.1 1.2.2 ASP.NET2.0 1.2.3 ASP.NET3.5 1.2.4 ASP.NET4 1.2.5 ...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
     《iphone开发秘籍(第2版)》提供了关于iphone sdk以及iphone开发的全面信息,对iphone sdk的各种组件做了深入浅出的介绍,包括iphone 3.0 sdk的所有新增特性,同时对iphone开发的基本流程、基本原理和基本原则...
  • 1.1.6 要点6:asp.net 支持所有的浏览器 8 1.1.7 要点7:asp.net 易于部署和配置 8 1.2 asp.net 的演变 9 1.2.1 asp.net 1.0 和asp.net1.1 9 1.2.2 asp.net 2.0 9 1.2.3 asp.net 3.5 10 1.2.4 asp.net 4...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

获取枚举中所有code