. net反射,期望系统.字符串获取系统.对象



我希望有人能给我指出正确的方向。我有一个方法(a),它返回通过反射(B)调用的另一个方法的结果。a返回一个对象类型,但是用(B)调用的方法返回一个字符串。

当我在本地运行应用程序时,并执行:

    object x = A(); 
    string y = x.GetType().ToString(); 

"y"的值是System。字符串。当我在生产环境中运行完全相同的代码时(是的,它是完全相同的代码/库/可执行文件等)。我没有头发可以证明:)),"y"是System.Object。这最终会导致下游出现错误。

谁能告诉我是什么导致了这种差异?我在本地运行的是Windows 7专业版的物理拷贝。在生产环境中,我运行的是虚拟化的Windows Server 2008 Standard。这个应用程序是用。net 3.5编写的。方法A和方法B是用VB编写的。网络图书馆。调用程序是用c#编写的。

不是很明显,但一定不能是相同的代码。如果它们是相同的代码,很可能会得到相同的结果。

是你用VB工作的源代码。网上图书馆吗?如果你这样做,因为你有源代码,它调用方法的源代码,所以它可以自动推断类型,而在"生产"版本中,它不能推断类型,因为它是从程序集或其他地方调用的。

有一个简单的修复方法:

object x = A();
object xCasted = x as string;
if(x == null) ; //you have issues

谢谢你的帮助。我已经解决了这个问题。事实证明,系统。对象返回的生产环境是准确的。A调用的方法使用ByRef Object变量,该变量被设置为字符串并返回。

当该变量在生产环境中被设置时,抛出一个异常并被吞下。当方法完成执行时,ByRef从未被分配字符串值,因此仍然是System.Object。

谢谢

相关内容

  • 没有找到相关文章

最新更新