[技术回顾系列]--.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  阅读(2300)  评论(1编辑  收藏  举报

导航