C#读取静态类常量属性和值

1.背景
最近项目中有一个需求需要从用户输入的值找到该值随对应的名字,由于其它模块已经定义了一份名字到值的一组常量,所以想借用该定义。
2.实现
实现的思路是采用C#支持的反射。
首先,给出静态类中的常量属性定义示例如下。

    public static class FruitCode
    {
        public const int Apple =  0x00080020;
        public const int Banana = 0x00080021;
        public const int Orange = 0x00080022;
    }
其次,编写提取该静态类常量Name和值的方法,如下所示。
     Type t = typeof(FruitCode);
     FieldInfo[] fis = t.GetFields();  // 注意,这里不能有任何选项,否则将无法获取到const常量
     Dictionary<int, string> dicFruitCode = new Dictionary<int, string>();
     foreach (var fieldInfo in fis)
     {
         var codeValue = fieldInfo.GetRawConstantValue();
         dicFruitCode.Add(Convert.ToInt32(codeValue), fieldInfo.Name.ToString());
     }

     foreach(var item in dicFruitCode)
     {
         Console.WriteLine("FieldName:{0}={1}",item.Value,item.Key);
     }

如期,实现了所需要的目的,如图所示。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值