急!!反射后不能转换到基类的问题?
如: 
 public   class   Base{} 
 public   class   ClassA   :   Base{} 
 用反射如 
 object   obj   =   Assembly.CreateInstance(    "ClassA "   ); 
 此时成功.但在 
 Base   info   =   (Base)obj时却失败,错误为转换无效。 
 为何呢,
------解决方案--------------------你那段代码我运行不了 
 试试下面这个             
             String reflectType =  "ClassA "; 
             Type type = Type.GetType(reflectType, true); 
             Base ba = (Base)Activator.CreateInstance(type); 
------解决方案--------------------TO:首先说明这个项目是WEB的, 
 刚才我在WINFORM中测试了下,转换是没有问题的。   
 有点奇怪,没遇到过..   
 关注一下..
------解决方案--------------------u0p
------解决方案--------------------object obj = Assembly.CreateInstance(  "ClassA " );   
 ClassA前面 加上 完整的 名空间
------解决方案--------------------Assembly是怎么来的?应该是版本问题……
------解决方案--------------------Response.Write( obj.GetType().FullName );此处输出的是PWMIS.Entity.CMenuConfig 
 -----------------   
 输出结果说明建立的对象类型是PWMIS.Entity.CMenuConfig, 
 这个类是ClassA,或从ClassA继承吗?   
 如果不是当然 
 Base info = (Base)obj 
 转换无效。
------解决方案--------------------如果是那样。你再多试一下, 
 if(obj is Base) 
 { 
     Response.Write(  "True " ); 
 }
------解决方案--------------------如果你判断一下 
 if(obj is Base) 
 { 
     Base bObj = obj as Base; 
 }
------解决方案--------------------没遇见过
------解决方案--------------------或者输出基类名称。用反射。
------解决方案--------------------碰见这种疑难杂症,最好的办法就是简化程序运行环境,逐步排除错误。可以建一个简单的空白项目,然后比照真实项目将各种设置一点点加上去,一般都能找到问题根源。
------解决方案--------------------虽然是同一个文件,但不是同一个assembly 
------解决方案--------------------web的目录结构是怎么样的?那个导入的DLL的路径又是什么?
------解决方案--------------------Assembly   asm   =   Assembly.LoadFile( 程序集.dll);  
 Type c = asm.GetType( "ClassA "); 
 object Instance = asm.CreateInstance(c.FullName); 
 Base Info=(Base)Instance;  			 
 楼主试一下
------解决方案--------------------你只要调试进入程序看看你的Assembly的对象加载的程序集是哪一个,也就是路径,然后核对和该段代码所在的程序下对该Assembly的引用的路径是否一致,如果不一致,那就错了
------解决方案--------------------Assembly   asm   =   Assembly.LoadFile( 程序集.dll);  
 Type c = asm.GetType( "ClassA "); 
 object Instance = asm.CreateInstance(c.FullName); 
 Base Info=(Base)Instance;   
 ---------------------------------- 
 支持这个。我有一段从微软给出来的代码,其中遇到反射的时候全都使用type.gettype()获得全名!
------解决方案--------------------虽然引用的是同一个文件,但在内存中却是处于两个不同的程序集中,这就是问题关键所在. 
 把前两行改成以下两行试试: 
 Type tp = Type.GetType(  "PWMIS.Entity.CMenuConfig " ); 
 Assembly asm = tp.Assembly; 
 //我不去加载程序集,是因为楼主说项目已经引用了,应该这样也能找到类吧?
------解决方案--------------------