什么是反射?
反射提供了封装程序集、模块和类型的对象(Type类型)
可以使用反射动态的创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后,可以调用类型的方法或访问其字段和属性
反射的用途
需要访问程序元数据的属性
检查和实例化程序集中的类型
在运行时构建新类型
执行后期绑定,访问在运行时创建的类型的方法
命名空间:System.Reflection
Type类
Type代表类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开发或封闭构造的泛型类型
Type是System.Reflection功能的根,是访问元数据的主要方式
可以使用Type的成员获取关于类型声明的信息,如构造函数、方法、字段、属性和类的事件
Type的实例可以表示一下任何类型
类
值类型
数组
接口
指针
枚举
构造泛型类型和泛型类型定义
构造泛型类型、泛型乐讯定义和泛型方法定义的类型实参和类型形参
Demo:
mscorlib.dll是.NET中一个最主要的程序集之一,现在我们来查看该程序集中的所有类型。
Assembly a = Assembly.Load("mscorlib.dll");
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = a.FullName; //获取程序集名称
Label1.Text += "<br>" + a.GetType().ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
Type[] T = a.GetTypes();
int count = a.GetTypes().Length;
for (int i = 0; i < count; i++)
{
Response.Write(T[i].FullName + "<br>");
}
}
Users 是ClassLibrary.dll程序集中的一个类,并且在该类中存在一个Say方法,下面我来看如何动态调用该程序集中的Say方法。
protected void Button2_Click(object sender, EventArgs e)
{
Assembly ab = Assembly.LoadFrom(@"D:/ClassLibrary.dll");
//获取程序集类型
Type newObject = ab.GetType("ClassLibrary.Users");
//创建动态加载程序集的实例
object myObject = Activator.CreateInstance(newObject);
//获取动态程序集的方法
MethodInfo info=newObject.GetMethod("Say");
//执行该方法
info.Invoke(myObject, null);
}
分享到:
相关推荐
C#反射实例C#反射实例讲解讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解C#反射实例讲解
C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例C# 反射工厂示例
利用Type动态创建类实例(C#反射)可以演变抽象工厂
C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子C# 反射 实例 示例 例子
C#反射学习,自己的学习笔记,涵盖了动态加载程序,每一小结以虚线结束,认真看完也就差不多学完了反射主要的类
C# 反射技术应用 反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个...
c# 反射测试 demo
C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结C#反射小结
C#反射机制源码学习.rar C#反射机制源码学习.rar C#反射机制源码学习.rar
C#反射动态创建菜单
c# 反射(Reflection)例子
实用结合C#反射实现动态定时器定时任务工具,可结合XML配置文档,实现独立动态的定时配置;用于定时任务执行、消息推送、WebService任务等;附件为程序源码。工具历经多项目验证,不足之处;欢迎交流指正!
C#反射,可以对反射进行详细的了解,值得一看
C#反射入门教程, 很好的教程!推荐!
c#反射 c#反射实例 开发环境VS2010 c#反射代码
C#反射生成SQL实例代码,无bug可完美运行,欢迎下载!
C#反射+委托案例 c#经典案例.pdf
C# 反射实例代码 接口方式动态加载dll方式
是一个 关于c#反射的几乎最好最全面的例子。
c# 反射调用对象成员 ! 可对于反射对象的所有成员,进行动态操作 !注释清晰,适合学习......