代码改变世界

【原创】使用反射之后,强制类型转化不成功的问题在哪?

2010-12-10 13:46  刺客之家  阅读(409)  评论(0编辑  收藏  举报

今天在编写一个软件的时候,遇到一个奇怪的问题:

解决方案下有2个项目,一个是test的测试用控制台程序,一个是类库项目。前者引用了后者的dll(直接通过项目引用)

在类库项目中有2个类A,B,B是继承自A的。我通过反射得到了一个B类的对象,众所周知这是个object类型的对象,然后我试图把这个对象转化为A类型,由于A是B的基类,这样的转化应该是肯定能成功的,但是我发现程序告诉我:

“无法将类型B转化为类型A”

 

最后发现原因在于:

我的测试项目引用dll的时候,是选择的项目dll,而通过反射获取程序集信息时,是指定的bin/debug目录下的dll,这2个dll的路径是不一样的。导致.net在进行类型转化的时候,认为测试项目中的A类型并不是dll中的A类型,导致转化失败。

本博客文章若非标记转载,均为原创,转载请注明出处~