[技术回顾系列]--.net反射机制

    .net反射机制为创建对象和调用其他方法提供了替代方案。比如为了提高代码的灵活性。但是问题确是我们要编写更多的代码来实现。
使用反射机制是有一些缺点的。其最大的缺点就是编译器无法对对象进行类型检查,此时IDE的智能感知将无能为力。但是他的真正优势又在什么地方呢?它提供了一种手段,将指定具体类推迟到了运行时刻。
使用反射机制调用方法的四步曲:
1 加载程序集
2 获取类的类型
3 创建该类的实例
4 调用该实例的方法
System.Reflection.Assembly类中有两个静态方法Assembly.Load(string assemblyName)和Assembly.LoadFrom(string fileName)来把程序集加载到应用程序序域中。
PS:在。NET中当一个对象被创建时,幕后到底发生了什么?当我们运行某一个应用程序时,.NET CLR会首先创建一个应用程序域来容纳这个应用程序,接着将应该引用的程序集加载到应用程序域中。其中MSCorLib.dll是一个程序集,它包含了很多系统命名空间及其子命名空间中的类:System;System.Text,System.IO等。该程序集合中。然后CLR加载正在运行的应用程序所属的程序集。
DEMO:
Assembly ass=Assembly.Load("Test");
Type type=ass.GetType("Test.ObjectName");
object obj=Activator.CreateInstance(type);
type.InvokeMember("objectMethod",BindingFlags.InvokeMethod,null,obj,null);
//.......
//上面的代码等同于:
ObjectName bo=new ObjectName();
bo.objectMethod();
PS: Activator.GetInstance(),Activator.GetObject()在设计模式和Remoting中都有他们的影子。

posted on 2007-01-16 09:08 kim 阅读(1668) 评论(1)  编辑 收藏 网摘 所属分类: 技术回顾系列C#编程




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 621342 g3DbAqE5TsY=



相关文章:

相关链接:

导航

统计

公告

中文: 罗江华
英文: KIM
职务: PL
工作地: 成都/新加坡/美国
MSN: ljhkim6@hotmail.com

---------------------------

我的微软MVP配置
我写/翻译的书



俱乐部:[cdproclub@gmail.com]
网站:http://www.cdpro.com.cn

与我联系

搜索

 

常用链接

留言簿

我参与的团队

随笔分类(202)

随笔档案(159)

文章分类(4)

文章档案(11)

相册

收藏夹(8)

创业

技术网站

我的好友

最新评论