现在的位置: 首页 > 综合 > 正文

使用反射技术列举类型信息!

2013年04月08日 ⁄ 综合 ⁄ 共 2554字 ⁄ 字号 评论关闭
 1 using System;
 2 using System.Reflection;
 3 
 4 namespace ConsoleApplication2 {
 5     class Class1 {
 6         [STAThread]
 7         static void Main(string[] args) {
 8             System.Type t=typeof(System.String);
 9             //获取构造函数
10             Console.WriteLine("获得构造函数列表");
11             System.Reflection.ConstructorInfo[] ci=t.GetConstructors(System.Reflection.BindingFlags.Public|System.Reflection.BindingFlags.Instance);
12             foreach(System.Reflection.MemberInfo mi in ci) {
13                 Console.WriteLine(mi.ToString());
14             }
15             Console.WriteLine("---------------------------------------------------------");
16             Console.WriteLine("获得成员数量");
17             //得到类型的成员数量
18             MemberInfo[] mii=t.GetMembers();
19             Console.WriteLine("{0} 类型共有 {1} 个成员",t.FullName,mii.Length);
20             if (t.IsPublic) {
21                 Console.WriteLine("{0} 的可见性为Public",t.FullName);
22             }
23             Console.WriteLine("---------------------------------------------------------");
24             //列出类型所有的字段,属性,方法,事件
25             Console.WriteLine("获得字段列表");
26             FieldInfo[] fi=t.GetFields(BindingFlags.Static|BindingFlags.NonPublic|BindingFlags.Public|BindingFlags.Instance);
27             foreach(MemberInfo mi in fi) {
28                 Console.WriteLine(mi.ToString());
29             }
30             Console.WriteLine("---------------------------------------------------------");
31             Console.WriteLine("获得属性列表");
32             PropertyInfo[] pi=t.GetProperties(BindingFlags.Static|BindingFlags.NonPublic|BindingFlags.Public|BindingFlags.Instance);
33             foreach(MemberInfo mi in pi) {
34                 Console.WriteLine(mi.ToString());
35             }
36             Console.WriteLine("---------------------------------------------------------");
37             Console.WriteLine("获得方法列表");
38             MethodInfo[] mmi =t.GetMethods(BindingFlags.Static|BindingFlags.NonPublic|BindingFlags.Public|BindingFlags.Instance);
39             foreach(MemberInfo mi in mmi) {
40                 Console.WriteLine(mi.ToString());
41             }
42             Console.WriteLine("---------------------------------------------------------");
43             Console.WriteLine("获得事件列表");
44             EventInfo[] ei=t.GetEvents(BindingFlags.Static|BindingFlags.NonPublic|BindingFlags.Public|BindingFlags.Instance);
45             foreach(MemberInfo mi in ei) {
46                 Console.WriteLine(mi.ToString());
47             }
48         }
49     }
50 }
51 

抱歉!评论已关闭.