这是在ASP.net一个页面button下的代码。Assembly ass = Assembly.LoadFile(@"E:\NET2008\ASPX\testAspLib\bin\Debug\AspLib.dll");
object o = ass.CreateInstance("AspLib.Class1");
if (o == null)
      return;
//以上都正常
MyClass class1 = o as MyClass;
这句转换后,class1对象是null,如何解决这样的问题,谢谢

解决方案 »

  1.   

    AspLib.Class1可以转换成MyClass吗?
      

  2.   

    object o = ass.CreateInstance("AspLib.MyClass"); 
    这句刚才写错了,不好意思,应该是这句才对
      

  3.   

    那AspLib.MyClass可以显式转换为MyClass吗?
      

  4.   

    AspLib.MyClass class1 = o as AspLib。MyClass也不成功。
    说明一下,AspLib是命名空间
      

  5.   

    .....呵呵~~~   多年前和你遇到同样问题  其实很简单E:\NET2008\ASPX\testAspLib\bin\Debug\AspLib.dll这个文件仔细看下 有没有
    还有~~~  为什么用绝对地址  不用相对~~?
    用绝对的话 换台机就不能用啦~~~路径问题
      

  6.   

    返回null说明o既不是AspLib也不是MyClass,确认一下它们之间的关系
      

  7.   

    谢谢,6,7楼,我不懂asp.net这个东东,目前只是为了测试我C#产品的BS模型,所以不得不?我提出大例子很简单,大家花费2分钟就可以建立起一个这样的例子,可以调试一下,试试看,就是这样的效果.
    请ASP.net高手解答,谢谢了
      

  8.   

    动态加载的dll和你引用的dll虽然是同一个dll ,但运行时不是同一个assembly
    所以不能转换
      

  9.   

    非常感谢9楼,那么就是说ASP.NET不能用反射了哦?对吗?
    因为反射出来大对象是object类型,我想转换成它本来的类型,不能达到,对吗
      

  10.   

    MyClass c = new object()
    试试这个
      

  11.   

    LZ理解错了
    ASP.NET绝对是可以用反射的
    BLL的动态连接库必须用添加应用程序的方式添加到你的网站
    而你只想用绝对路径的方法得到~~~~  不可取~~~
    你的方法导致dll和你的项目不在一个assembly下
    如果用添加应用程序的方式就可以了