通过反射得到类型的所有成员
2010-03-20 18:18
337 查看
下面代码演示了如何通过反射技术得到某个类型的所有成员。需要注意的是,默认情况下,GetMembers方式是只能读取公有成员的,如果需要读取所有的成员,则需要用下面的方式
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Type t = typeof(Employee); Console.WriteLine(); //下面的方法打印所有的Member Console.WriteLine("所有公有成员"); foreach (var item in t.GetMembers(BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance)) { if (item.MemberType.ToString() == "Field") { FieldInfo field = (FieldInfo)item; Console.WriteLine( "{0}{1}{2}", field.Name.PadRight(30), string.Format("Field({0})", field.FieldType.ToString()).PadRight(30), field.FieldType.IsValueType); } else { Console.WriteLine( "{0}{1}{2}", item.Name.PadRight(30), item.MemberType.ToString().PadRight(30), item.GetType().IsValueType ); } } Console.Read(); } } class Employee { public string publicField; private int privateField; internal int internalField; protected int protectedField; public string Name { get; set; } public void SomeMethod() { } private void SomeMethod2() { } public event EventHandler SomeEvent; public static int staticField; } }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
相关文章推荐
- 通过反射得到类型的所有成员
- 通过反射得到object[]数组的类型并且的到此类型所有的字段及字段的值
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过spring反射工具类ReflectionUtils 得到所有定义的变量
- Java反射学习-使用反射修改一个类中的所有String类型的成员变量的值
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 将任意一个对象中的所有String类型 的成员变量所对应字符串中的“b”改成“a”(利用反射)
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- java通过反射+javassist获得方法所有信息(返回值、方法名、参数类型列表、参数列表)
- 通过反射得到model的真实类型
- 通过反射得到model的真实类型
- 通过暴力反射得到私有成员