日期:2014-05-18 浏览次数:20742 次
Type t = Type.GetType("System.Int32[]"); int[] array = new int[10];//初始化数组长度为10 array = (int[])(t.InvokeMember("Set", BindingFlags.CreateInstance,null, array, new object[] { 5 }));//这里将它的长度变为5看看是否能成功 Console.WriteLine(array.Length);
------解决方案--------------------
http://www.cnblogs.com/sleepywang/archive/2008/04/04/1137314.html
------解决方案--------------------
这里的className就是一个类的名字是一个字符串
System.Reflection.Assembly ass = System.Reflection.Assembly.Load(nameSpace); //nameSpace并不是名称空间,而是程序集名称
object obj = ass.CreateInstance(className);
Iobject op = (Iobject)obj;//Iobject为抽象类,是className的父类
------解决方案--------------------
貌似这不应该叫反射,而是动态编译的问题.
------解决方案--------------------
是什么样的字符串呢?如果是程序集全名称,那就更容易了
Type t = Type.GetType(assembleFullName); object instance = Activator.CreateInstance(t);
------解决方案--------------------
http://blog.csdn.net/jinjazz/archive/2009/02/10/3872871.aspx
------解决方案--------------------
先做个记号··
------解决方案--------------------
????
------解决方案--------------------
在只知道字符串的情况下
如果是一个dll的完整路径。
先加载此dll然后
1获取所有的类型信息
2获取某个类型的构造函数列表
3使用某个构造函数的参数和列表类型信息
4使用该构造函数构造一个对象
------解决方案--------------------
学习一下。。
------解决方案--------------------
还是有些模糊
------解决方案--------------------
using System.Reflection
新建对象:
object obj = Type.GetType(类名+","+名称空间).InvokeMember(null, BindingFlags.CreateInstance |BindingFlags.Instance | BindingFlags.Public, null, null, null);
------解决方案--------------------
http://edu.itbulo.com/200608/104156.htm
这个可能参考一下
------解决方案--------------------
mark下