zoukankan      html  css  js  c++  java
  • 利用反射机制获取未知类型的枚举的信息

    开发游戏设置选项遇到一个问题,我有两个枚举,一个是屏幕分辨率,一个是语言

    我需要在不知道一个枚举到底是哪一个枚举类型的情况下,获取这个枚举的值以及这个枚举类型的所有可能值。

    比如 Enum b = ScreenSize._1280x720; 我希望我能获取到他的值 1 和所有可能值 _1920x1080 和 _1280x720

    方法如下

     1         static Enum GetEnum()
     2         {
     3             return ScreenSize._1280x720;//也有可能是 Languages.English ,返回值不能确定具体类型
     4         }
     5 
     6         static void Main(string[] args)
     7         {
     8             Enum b = GetEnum();
     9             var fields = b.GetType().GetFields();
    10             Console.WriteLine(fields.Length);
    11             foreach(var item in fields)
    12             {
    13                 Console.WriteLine(item.Name + "	" + item.GetValue(b) + "	" + item.GetType());
    14             }
    15             var val = b.GetType().GetField("value__").GetValue(b);
    16             Console.WriteLine(val.GetType() + "	" + val);
    17 
    18             Console.ReadKey();
    19         }

    如果把代码里第3行改为

    1 return Languages.Chinese;

    则输出为

  • 相关阅读:
    Windows CA 证书服务器
    IE7的web标准之道
    mysql 密码重置
    IIS 与 Apache共存
    php 正则表达式
    sql 记录
    [ Python ] 迭代对象、迭代器、生成器
    [ Python ] 文件的读写操作
    [ Python ] 匿名函数和高阶函数
    [ Python ] set集合及函数的使用
  • 原文地址:https://www.cnblogs.com/Yukisora/p/9051287.html
Copyright © 2011-2022 走看看