DotNet框架:System.Reflection

简介:

这篇文章我们来学习System.Reflection,.net中反射的核心类.先来看图:

前面的文章,我们说过.net的元数据可以完整地描述类型,那么通过System.Reflection,可以在运行时发现类型格式,我们来看一下元数据:

源代码:

复制代码
class Class2
{

private int x;
private int y;
public Class2(int a, int b)
{
x = a;
y = b;
}

public int Add()
{
return x+y;
}

}
复制代码

1.Assembly:主要是加载和操纵一个程序集.

2.ParameterInfo:该类保存给定参数的信息,也就是说方法的参数,可以用该类来操作.

3.Module:访问带有多文件程序集的给定模块,可以认为就是命名空间.

4.MemberInfo:该类是抽象基类,为他的子类定义了公共的行为.如MemberTypes,MemberName等.而他的子类则分别是方法,属性,字段,事件等信息的具体实现.

那么这些类如何来完成类型的反射呢?

复制代码
Assembly asm = Assembly.Load( " Test "); // dll的名称
Type t = asm.GetType( " Test.Class2 "); // 类的完全命名
object obj = Activator.CreateInstance(t); // 创建Class2的实例
MethodInfo mi = t.GetMethod( " Add "); // 获取Class2中Add方法的信息.
string s = ( string)mi.Invoke(obj, null); // 执行方法,需要参数1:Class2的实例,2:方法的参数列表.

FieldInfo pi = t.GetField( " x "); // 获取字段信息
pi.GetValue(obj); // 得到字段值
复制代码

事件和属性的反射调用,同上述代码差不多,不再赘述.上面的代码中我们使用了Type这个类型,这里做一下简单的介绍

System.Type定义了大量的成员,可以用来检查一个类型的元数据,如GetMethod,GetFields等方法,基本上一个类型的所有信息都可以得到




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2010/03/01/1675557.html,如需转载请自行联系原作者

相关文章
|
IDE Java 开发工具
解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (D:/JAVA)
解决IntelliJ IDEA报错Error:Cannot determine path to ‘tools.jar‘ library for 17 (D:/JAVA)
1585 0
|
6月前
|
IDE Java 开发工具
Java GUI Testing - JFCUnit Introduce
Java GUI Testing - JFCUnit Introduce
26 0
|
Java
System与Runtime类
System与Runtime类
74 0
|
7月前
|
设计模式 Java API
【Java】Best coding practices every java developer should
【Java】Best coding practices every java developer should
81 0
|
7月前
|
设计模式 Java Unix
【Java】Best coding practices every java developer should(一)
【Java】Best coding practices every java developer should
73 0
|
7月前
|
IDE Java 程序员
【Java】Best coding practices every java developer should(二)
【Java】Best coding practices every java developer should
67 0
|
Java
IntelliJ IDEA - Error:java: Compilation failed: internal java compiler error
IntelliJ IDEA - Error:java: Compilation failed: internal java compiler error
843 0
IntelliJ IDEA - Error:java: Compilation failed: internal java compiler error
成功解决RuntimeError: Java is not installed, or the Java executable is not on system path
成功解决RuntimeError: Java is not installed, or the Java executable is not on system path
|
Java Android开发
Eclipse中项目报Target runtime com.genuitec.runtime.generic.jee60 is not defined异常的解决方法
Eclipse中项目报Target runtime com.genuitec.runtime.generic.jee60 is not defined异常的解决
568 0
Eclipse中项目报Target runtime com.genuitec.runtime.generic.jee60 is not defined异常的解决方法
|
Java
IDEA 出现问题:Error:java: Compilation failed: internal java compiler error解决方案
IDEA 出现问题:Error:java: Compilation failed: internal java compiler error解决方案
1098 0
IDEA 出现问题:Error:java: Compilation failed: internal java compiler error解决方案