当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .Net基础:学习反射中的动态创建对象

ASP.NET
asp.net 使用Silverlight操作ASPNETDB数据库
ASP.NET 前后台调用方法
ASP.NET中等安全模式的一些经验分享
asp.net 打印控件使用方法
网站开发技术:ASP.NET 2.0搭建网站
ASP.NET实例教程:创建数据透视表
ASP.NET 4进行SEO优化提高网站排名和权重
ASP.NET实例教程:订阅 GeoRSS 订阅源
ASP.NET页面间数据传递的9种方法
ASP.NET教程:网页表单多个按钮完成不同功能
Asp.net的服务器推技术 (Server Push)
asp.net 无刷新附件上传实现方法
ASP.NET 定制简单的错误处理页面实现代码
c# 在WebBrowser中用SendMessage模拟鼠标点击
asp.net 表单验证新思路
.NET从优酷专辑中采集所有视频及信息(VB.NET代码)
VS2005 水晶报表在时部署时遇到的问题
ASP.NET 输出图片简单代码
一天精通asp.net的学习经验小结
DataGridView中绑定DataTable数据及相关操作实现代码

ASP.NET 中的 .Net基础:学习反射中的动态创建对象


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 86 ::
收藏到网摘: n/a

Assembly的CreateInstance有三个重载,第一个参数需要是一个字符串表示的完整的类名。第二个参数是一个bool类型,如果为true,表示对第一个参数不区分大小写。

第三个: 影响执行搜索的方式的位屏蔽。此值是 System.Reflection.BindingFlags 中的位标志的组合。

// binder: 一个启用绑定、参数类型强制、成员调用以及通过反射进行 MemberInfo 对象检索的对象。如果 binder 为 null,则使用默认联编程序。// args: Object 类型的数组,包含要传递给构造函数的参数。此参数数组在数量、顺序和类型方面必须与要调用的构造函数的参数匹配。如果需要默认的构造函数,则 args 必须是空数组或 null。

// culture: 用于控制类型强制的 CultureInfo 的实例。如果这是 null,则使用当前线程的 CultureInfo。(例如,这对于将表示 1000 的 String 转换为

Double 值是必需的,因为不同的区域性以不同的方式表示 1000。

// activationAttributes: 包含一个或多个可以参与激活的属性的数组。通常为包含单个 System.Runtime.Remoting.Activation.UrlAttribute 对象的数组。

System.Runtime.Remoting.Activation.UrlAttribute 指定激活远程对象所需的 URL。有关客户端激活的对象的详细说明,请参见客户端激活。

Activator类的静态方法CreateInstance。

CreateInstance的第一个参数说明是程序集的名称,为null时表示当前程序集;第二个参数说明要创建的类型名称。Activator.CreateInstance返回的是一个ObjectHandle对象,必须进行一次Unwrap()才能返回Object类型,进而可以强制转换成我们需要的类型(本例中是MathClass)。ObjectHandle包含在System.Runtime.Remoting命名空间中,可见它是Remoting相关的,实际上ObjectHandle类只是一个对原类型进行了一个包装以便进行封送。

无参构造:

有参构造:

动态调用 :

.使用InvokeMember调用方法

InvokeMember("方法名", BindingFlags.InvokeMethod, null,对象实例,方法参数);

静态:InvokeMember("方法名", BindingFlags.InvokeMethod, null,'类型Type',方法参数);

.MethodInfo.Invoke调用方法

MethodInfo mi = t.GetMethod("方法名"", BindingFlags.Instance | BindingFlags.Public);

mi.Invoke(对象实例, null);

静态

MethodInfo mi1 = t.GetMethod("方法名"", BindingFlags.Static | BindingFlags.Public);

Mi1.Invoke(null, 方法参数 );

用反射可以达到最大程度上的多态