C#读取静态类常量属性和值
程序员文章站
2022-04-14 16:13:20
1.背景最近项目中有一个需求需要从用户输入的值找到该值随对应的名字,由于其它模块已经定义了一份名字到值的一组常量,所以想借用该定义。2.实现实现的思路是采用C#支持的反射。首先,给出静态类中的常量属性定义示例如下。 public static class FruitCode { public con ......
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); }
如期,实现了所需要的目的,如图所示。