什么是反射:反射就是通过类对象,获取字段,属性,方法。
using System;
using System.Reflection;
namespace Study
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("-----------------------------Hello Types!-------------------------------");
People people = new People(18, "han");
//getFieldInfo(people);
// getPropertyInfo(people);
//getMethoedInfo(people);
// getMemberInfo(people);
getConstructors(people);
}
/// <summary>
/// 获取公共字段
/// </summary>
/// <param name="obj">Object.</param>
public static void getFieldInfo(object obj ){
Type type = obj.GetType();
FieldInfo[] arrFieldInfo = type.GetFields();
foreach (FieldInfo fieldInfo in arrFieldInfo)
{
Console.WriteLine("name:" + fieldInfo.Name);
Console.WriteLine("type:" + fieldInfo.FieldType.ToString());
Console.WriteLine("value:" + fieldInfo.GetValue(obj).ToString());
}
Console.WriteLine("------------------GetFields字段");
}
/// <summary>
/// 获取熟悉
/// </summary>
/// <param name="obj">Object.</param>
public static void getPropertyInfo(object obj)
{
Type type = obj.GetType();
PropertyInfo[] arrPropertyInfo = type.GetProperties();
foreach (PropertyInfo propertyInfo in arrPropertyInfo)
{
Console.WriteLine("name:" + propertyInfo.Name);
Console.WriteLine("property:" + propertyInfo.PropertyType);
Console.WriteLine("value:" + propertyInfo.GetValue(obj).ToString());
}
Console.WriteLine("--------------------GetProperty获取属性");
}
/// <summary>
/// 获取方法
/// </summary>
/// <param name="obj">Object.</param>
public static void getMethoedInfo(object obj){
MethodInfo[] arrMethodInfo = obj.GetType().GetMethods();
foreach (MethodInfo mathodInfo in arrMethodInfo)
{
Console.WriteLine("name:"+mathodInfo.Name);
//Console.WriteLine(""+mathodInfo.GetParameters().ToString());
}
Console.WriteLine("----------------------GetMethodInfo获取方法");
}
public static void getMemberInfo(object obj)
{
MemberInfo[] arrMemberInfo = obj.GetType().GetMembers();
foreach (MemberInfo memberInfo in arrMemberInfo)
{
Console.WriteLine("name:"+memberInfo.Name);
}
Console.WriteLine("----------------------GetMethodInfo获取方法");
}
public static void getConstructors(object obj)
{
ConstructorInfo[] arrConstructornfo = obj.GetType().GetConstructors();
foreach (ConstructorInfo constructroInfo in arrConstructornfo)
{
Console.WriteLine("name:" + constructroInfo.Name);
ParameterInfo[] parameterInfo = constructroInfo.GetParameters();
}
Console.WriteLine("----------------------GetMethodInfo获取方法");
}
}
class People
{
/// <summary>
/// 字段
/// </summary>
private int sex=0;
private string work=" no work";
public int weight = 90;
public string m_iId="68";
/// <summary>
/// 熟悉
/// </summary>
/// <value>The m i age.</value>
public int m_iAge { get; set; }
public string m_sName { get; set; }
/// <summary>
/// 构造函数
/// </summary>
public People()
{
this.sex = 1;
this.work = "student";
}
public People(int age,string name){
this.m_iAge = age;
this.m_sName = name;
}
/// <summary>
/// 公共方法
/// </summary>
public void sing(){
Console.WriteLine("sing");
}
public void wark(){
Console.WriteLine("working");
}
public void dance(){
Console.WriteLine("dance");
}
}
}