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 根据有参数的构造器创建对象
- Type t = Type.GetType(“TestSpace.TestClass”);
- Object[] constructParms = new object[] {“hello”}; //构造器参数
- 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);