反射技术

来源:互联网 发布:开淘宝店手机怎么认证 编辑:程序博客网 时间:2024/05/16 09:04

我们可以使用反射来执行以下任务:

获取程序集中有关公共类型及其公共成员的信息。

了解代码所在的模块和程序集。

调用程序集中类型对象公共属性和方法。

 

使用反射操作某个程序集中的类型,基本上分两步走,首先要加载要反射的程序集,然后通过Type类的方法对程序集中类型进行枚举或调用。因为对非公共信息的访问将带来危险

,所以.NET反射机制在默认情况下只能对程序集中的公共的类型的信息或成员进行反射。

 

加载程序集使用System.Reflection命名空间的Assembly类的Load方法或LoadFrom方法:

Assembly.Load(String assembyName)

Assembly.LoadFrom(String assemblyPath)

 

程序集加载以后我们就可以通过Assembly类的GetType和GetTypes方法来获得加载程序集的类型。

public Type GetType(string name)

public Type[] GetTypes()

 

有关Type类的常用方法

GetMethod或GetMethods                 返回MethodInfo

GetField或GetFields                          返回FieldInfo

GetEvent或GetEvents                       返回EventInfo

GetPropertie或GetProperties               返回PropertyInfo

GetConstructor或GetConstructors     返回ConstructorInfo

 

代码示例

class Program{

static void Main(string[] args){

Assembly ass = Assembly.LoadFrom(@"E:\Test\ClassLibraryMath.dll");

Type t= ass.GetType("ClassLibraryMath.Maths");

object obj = Activator.CreateInstance(t);

MethodInfo m = t.getMethod("Add");

object r = m.Invoke(obj,new object[]{1,2});

console.Write(r);

}

}

 

 

原创粉丝点击