//代码
/***************************************
* 反射的概念
* 1:反射是通过程序,了解以及调用“程序集”中程序的相关属性,方法,字段
*
* ************************************/
using System;
using System.Reflection;
namespace 反射与特性
{
class Demo1
{
/// <summary>
/// Type查询类的普通信息
/// </summary>
public void Test1()
{
Person per = new Person();
//Type实例可以获取类名称,所属命名空间、是否为公共类等以及类的字段、属性、方法等信息
Type tyPersonObj = per.GetType();
//显示类的名称
Console.WriteLine(tyPersonObj.Name);
//显示类所属的命名空间
Console.WriteLine(tyPersonObj.Namespace);
//显示所属的程序集
Console.WriteLine(tyPersonObj.Assembly);
//获取类的是否为公共、密封、私有
Console.WriteLine(tyPersonObj.IsPublic);
Console.WriteLine(tyPersonObj.IsSealed);
Console.WriteLine(tyPersonObj.IsPrimitive);
}
/// <summary>
/// Type查询类中的方法,属性,字段等信息
/// </summary>
public void Test2()
{
Person per = new Person();
Type tyPersonObj = per.GetType();
Console.WriteLine("---------------------------------");
//得到字段信息
FieldInfo[] fieArray = tyPersonObj.GetFields();
foreach (FieldInfo item in fieArray)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("---------------------------------");
//得到方法信息
MethodInfo[] metArray = tyPersonObj.GetMethods();
foreach (MethodInfo item in metArray)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("---------------------------------");
//得到属性信息
PropertyInfo[] proArray = tyPersonObj.GetProperties();
foreach (PropertyInfo item in proArray)
{
Console.WriteLine(item.Name);
}
Console.WriteLine("---------------------------------");
}
static void Main(string[] args)
{
Demo1 obj = new Demo1();
obj.Test1();
obj.Test2();
Console.ReadKey();
}
}
}
//调用的类
using System;
using System.Collections.Generic;
using System.Text;
namespace 反射与特性
{
public class Person
{
public string Name;
public int Age;
private int _ID;
//属性
public int ID
{
get { return _ID; }
set { _ID = value; }
}
//方法
public void DisplayID()
{
Console.WriteLine(_ID);
}
public void DisplayName()
{
Console.WriteLine(Name);
}
public void DisplayAge()
{
Console.WriteLine(Age);
}
}
}