代码如下
 //取得当前的程序集
 System.Reflection.Assembly assembly = System.Reflection.Assembly.GetCallingAssembly();//通过类型创建对象实例
object o = assembly.CreateInstance("ProviderDemo.FileCartProvider");//这里总取不到对象,o始终是nullo.ToString();这个是我自己学习时候按书本内容直接敲上去的一段代码,ProviderDemo.FileCartProvider类没有任何问题,直接使用
ProviderDemo.FileCartProvider a=new ProviderDemo.FileCartProvider();没有任何问题,但是当我使用assembly.CreateInstance("ProviderDemo.FileCartProvider");的时候,却怎么也取不到对象实例,总是报空引用异常(o==null)
实在不明白到底是为什么,希望能够得到解答

解决方案 »

  1.   

    Assembly.CreateInstance 需要把类名写全,即各层命名空间写全。可以检查一下这个。
      

  2.   

    微软MSDN上关于Assembly.GetCallingAssembly的说明Assembly.GetCallingAssembly 方法
    返回调用当前正在执行的方法的 Assembly
    http://msdn.microsoft.com/zh-cn/library/system.reflection.assembly.getcallingassembly(VS.85).aspx所以个人理解,出现null值的原因可能是:楼主当前使用的方法与楼主想调用的Assembly不在同一个Assembly中假如楼主改用Assembly.LoadFrom("ProviderDemo.FileCartProvider");应该可以解决
      

  3.   

    上面写错了
    Assembly asm =  Assembly.LoadFrom("程序集全名");
    asm.CreateInstance("对象名");另外,CreateInstance方法是有重载形式的可以使用带BindingFlag参数的重载形式(一般用不到)