.NET反射简单应用———遍历枚举字段

  反射(Reflection)是一个非常强大的工具,可以用来查看和遍历类型和类型成员的元数据;动态创建类型实例,动态调用所创建的实例方法、字段、属性;迟绑定方法和属性。此次要介绍的是使用反射查看类型成员信息——遍历枚举。代码如下:

 1 private static DataTable GetData()
 2 {
 3     Type t=typeof(Enum);                   // 创建类型
 4     FieldInfo [] fieldArray=t.GetFields(); //获取字段信息对象集合
 5     DataTable dt=new DataTable();
 6     dt.Columns.Add("Name",Type.GetType("System.String"));
 7     dt.Columns.Add("Value",Type.GetType("System.Int32"));
 8     foreach(FieldInfo field in fieldArray)
 9     {
10          if(!field.IsSpecialName)
11          {
12               DataRow dtRow=dt.NewRow();
13               dtRow[0]=field.Name;
14               dtRow[1]=Convert.ToInt32(field.GetRawConstanValue());
15               dt.Rows.Add(dtRow);
16           }
17      }18     return dt;
19 }

  Type类是反射的核心,这个类封装了类型的元数据,是进行反射的入口。当获得了类型的Type对象后,就可以根据Type提供的属性和方法获取这个类型的方法、字段、属性、事件、参数、构造函数等一切信息。

时间: 2024-10-12 14:00:17

.NET反射简单应用———遍历枚举字段的相关文章

C# 反射简单介绍

原文:https://blog.csdn.net/wu1020300665/article/details/82958455 1.什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息.有了反射,即可对每一个类型了如指掌.另外我还可以直接创建对象,即使这个对象的类型在编译时还不知道. 2.反射简单例子 平时我们写调用dll都是添加引用,然后new对象,如 通过反射,我们可以实现同样的效果,而不需要添加引用,

VM页面中遍历枚举类

1)自定义的枚举类如下所示: public enum BusType { MID_SMALL(1, "中小件"), FRESH(2, "生鲜"), GLOBAL_SHOPPING(3, "全球购"); private int key; private String value; private BusType(int key, String value) { this.key = key; this.value = value; } public

1.4.2 solr字段类型--(1.4.2.5)使用枚举字段

1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期) (1.4.2.5) 使用枚举字段 (1.4.2.6) 使用外部文件和程序 (1.4.2.7) 字段属性使用案例 使用枚举字段 枚举字段类型允许定义一个这样的字段,字段的值是一个封闭的结果集.这排列顺序是预先定义好的,不是按照字母或者数字大小排序的.如严重性列表或者是风险定义的例子. 在schem

c# 反射简单用法例子

闲来无事,看了下反射的实现,写了个小例子. 新建一个类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WfmReflection { class MyClass { public string m; public void test() { } public int MyProperty { get; set; } } } 建一个类库 using S

java反射简单实现注入

做了好久的java开发 ,却一直没有详细了解java反射机制,后来写项目的时候发现用反射可以少写好多无聊的代码,因此用java反射简单实现注入. java反射的具体细节可参见 这篇博客写的非常详细,点此进入~ 而一般基于业务的编程主要用反射实现将属性动态的注入一个对象中. 以下是方法实现: 1 /** 2 * 根据 传入的map与类名,通过反射实例化对象 3 * @param className 需要实例化的类名 4 * @param map 包含属性的键值对 (String,Object) 5

C# 遍历枚举

C#中,如何获取(遍历)枚举中所有的值: public enum Suits { Spades, Hearts, Clubs, Diamonds, NumSuits } private static void Main(string[] args) { foreach (Suits suit in Enum.GetValues(typeof(Suits))) { Console.WriteLine((int)suit+ ":" + suit); } }

C# 获取枚举的 键名称,值 和描述 遍历枚举

C# Enum  枚举的操作.  键名称,值 和描述  和 遍历枚举 /// <summary> /// 促销 /// </summary> public enum cxsd { [Description("推荐")] tj = 2, [Description("置顶")] zd = 4, [Description("热卖")] rm = 8 } //获取 枚举 值 Array rolearry = Enum.GetVal

通过java反射获取任意对象的字段名及字段值

import java.lang.reflect.Field; public class ReflectClass3 { /** * @param args */ public static void main(String[] args) { Person p = new Person(1, "ctl", true, 'c', 2.0f, 2.0, 1L, (short) 1, (byte) 1); p.setId(0); p.setName("张三"); p.s

C# 遍历枚举(枚举是目的,遍历(获取)是手段)

C#中,如何获取(遍历)枚举中所有的值: public enum Suits { Spades, Hearts, Clubs, Diamonds, NumSuits } private static void Main(string[] args) { foreach (Suits suit in Enum.GetValues(typeof(Suits))) { Console.WriteLine((int)suit+ ":" + suit); } } 转载:https://www.c