【问题标题】:Type.GetType() throwing a StackOverflowExceptionType.GetType() 抛出 StackOverflowException
【发布时间】:2013-08-29 07:24:48
【问题描述】:

这段代码有问题

Type.GetType("Fully qualified assembly name goes here");

但是得到一个无法捕获的 StackOverflowException。

我已经设法从完全限定的程序集名称实例化类,但在调用具有相同名称的 GetType 时出现此错误。

此外,我观察到有问题的代码行在某些情况下有效,而在另一些情况下无效,在这两种情况下使用完全相同的完全限定程序集名称。

这是我的第一个 StackOverflow 问题,因此欢迎大家了解它的结构。 :)

【问题讨论】:

  • 这段代码是否有循环?
  • 这门课是你写的吗?如果是这样,你能发布相关的代码吗?
  • 如果您遇到堆栈溢出问题,您来对地方了...
  • 你看过调用栈吗? (Debug->Windows->Call Stack)...通常你可以从那里看到问题。
  • 仅用您发布的一行假代码来解释这一点并不简单。您需要寻找在调用 Type.GetType() 时运行的 other 代码。类似于 AppDomain.AssemblyResolve 事件处理程序或静态构造函数。

标签: c# stack-overflow


【解决方案1】:

以下是http://msdn.microsoft.com/en-us/library/w3f99sx1.aspx 可能会提供帮助的一些相关信息:

要确定您的程序集是否存在问题,请尝试以下操作:

GetType 导致加载 typeName 中指定的程序集。您也可以使用 Load 方法加载程序集,然后使用 Assembly 类的 GetType 或 GetTypes 方法获取 Type 对象。

如果您在Load(assembly) 上遇到错误,那么您就知道问题不在于GetType() 调用。

另外,请确保您传递的程序集类型正确:

GetType 仅适用于从磁盘加载的程序集。如果您调用 GetType 来查找在使用 System.Reflection.Emit 服务定义的动态程序集中定义的类型,您可能会得到不一致的行为。

【讨论】:

    猜你喜欢
    • 2021-01-25
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2015-03-25
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    相关资源
    最近更新 更多