用途:
①使用Assembly定义和加载程序集,加载在程序集清单中列出模块,
以及从此程序集中查找类型并创建该类型的实例。
②使用Module了解包含模块的程序集以及模块中的类等,
还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
③使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(
如pulic 或private)和实现详细信息(如abstract或virtual)等。使用Type的
GetConstructors或GetConstructor方法来调用特定的构造函数。
④使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)
和实现详细信息(如abstract或virtual)等。使用Type的GetMethods或GetMethod方法来调用特定的方法。
⑤使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,
并获取或设置字段值。
⑥使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,
添加或移除事件处理程序。
⑦使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,
获取或设置属性值。
⑧使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,
以及参数在方法签名中的位置等。
示例代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace myReflection
{
class Program
{
static void Main(string[] args)
{
Master ma = new Master();
Type tp = ma.GetType();
MethodInfo [] MI = tp.GetMethods();
foreach (MethodInfo mm in MI)
{
Console.WriteLine(mm.Name);
}
}
}
class Student
{
private string stuName;
public string StuName
{
get { return stuName; }
set { stuName = value; }
}
private int stuAge;
public int StuAge
{
get { return stuAge; }
set { stuAge = value; }
}
public void study()
{
Console.WriteLine("学习!");
}
}
class Master:Student
{
public void Say()
{
Console.WriteLine("硕士.....");
}
}
}
输出的结果为:Say,get_StuName,set_StuName,get_StuAge,set_StuAge,study
//这里是我自己写的方法和属性系统把属性也当做方法输出了
GetType,ToString,Equals,GetHashCode //这里是继承的 Object的方法。
希望对楼主有帮助。 |