一个System.Reflection.Assembly的奇怪问题
代码如下
//取得当前的程序集
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetCallingAssembly();
//通过类型创建对象实例
object o = assembly.CreateInstance("ProviderDemo.FileCartProvider");//这里总取不到对象,o始终是null
o.ToString();
这个是我自己学习时候按书本内容直接敲上去的一段代码,ProviderDemo.FileCartProvider类没有任何问题,直接使用
ProviderDemo.FileCartProvider a=new ProviderDemo.FileCartProvider();没有任何问题,但是当我使用assembly.CreateInstance("ProviderDemo.FileCartProvider");的时候,却怎么也取不到对象实例,总是报空引用异常(o==null)
实在不明白到底是为什么,希望能够得到解答
------解决方案--------------------Assembly.CreateInstance 需要把类名写全,即各层命名空间写全。可以检查一下这个。
------解决方案--------------------
微软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");应该可以解决
------解决方案--------------------
------解决方案--------------------LS说的很清楚