反射简介

1利用反射 如何判断传递进来的参数是否实现了某个接口

Type t=object.GetType()

if(t.GetInterface("ITest")!=null)

{

}

2 利用反射获取类型

Type t=Type.GetType("System.String")

3 如何根据类型来动态的创建对象

Type  t  =  Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0,  Culture=neutral,  PublicKeyToken=b77a5c561934e089");
DataTable  table  =  (DataTable)Activator.CreateInstance(t);

4 根据有参数的构造器创建对象

  1. Type  t  =  Type.GetType(“TestSpace.TestClass”);
  2. Object[]  constructParms  =  new  object[]  {“hello”};  //构造器参数
  3. TestClass  obj  =  (TestClass)Activator.CreateInstance(t,constructParms);

5 如何获取方法以及动态调用方法

//获取类型信息
Type  t  =  Type.GetType("TestSpace.TestClass");
//构造器的参数
object[]  constuctParms  =  new  object[]{"timmy"};
//根据类型创建对象
object  dObj  =  Activator.CreateInstance(t,constuctParms);
//获取方法的信息
MethodInfo  method  =  t.GetMethod("GetValue");
//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
BindingFlags  flag  =  BindingFlags.Public  |  BindingFlags.Instance;
//GetValue方法的参数
object[]  parameters  =  new  object[]{"Hello"};
//调用方法,用一个object接收返回值
object  returnValue  =  method.Invoke(dObj,flag,Type.DefaultBinder,parameters,null);
原文地址:https://www.cnblogs.com/mibing/p/7837621.html