读书人

一个System.Reflection.Assembly的奇怪

发布时间: 2012-02-29 16:44:11 作者: rapoo

一个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");应该可以解决
[解决办法]

探讨
微软MSDN上关于Assembly.GetCallingAssembly的说明

Assembly.GetCallingAssembly 方法
返回调用当前正在执行的方法的 Assembly
http://msdn.microsoft.com/zh-cn/library/system.reflection.assembly.getcallingassembly(VS.85).aspx

所以个人理解,出现null值的原因可能是:楼主当前使用的方法与楼主想调用的Assembly不在同一个Assembly中



[解决办法]
LS说的很清楚

读书人网 >asp.net

热点推荐