【发布时间】:2012-07-03 00:02:07
【问题描述】:
我有一些 C# 代码在 mono 和 Microsoft 的 .net 编译器下都能正常编译,但只能在 mono 上运行。 错误信息是(我添加的换行符)
Unhandled Exception: System.TypeLoadException:
Could not load type 'Hasse.Groups.Heavy.Product.PowerGroup`1'
from assembly 'Hasse, Version=1.0.x.y, Culture=neutral, PublicKeyToken=null'
because it has recursive generic definition.
该类型实际上有一个递归泛型定义,所以我的问题是:为什么它适用于单声道? [代码运行并产生预期结果]
完整的源代码在这里:https://github.com/miniBill/Hasse
仍然崩溃的精简代码在这里:
public class Group<T> : IWrappableGroup<WrapperGroup<T>> {}
public class WrapperElement<T> {}
public interface IWrappableGroup<U> {}
public class WrapperGroup<T> : Group<WrapperElement<T>> {}
class MainClass {
public static void Main(string[] args){
var ng = new Group<object>();
}
}
这是它在单声道上工作的证据:http://ideone.com/ZvA3I
【问题讨论】:
-
与其给我们提供大型项目的链接,不如发布一个简短(最小)但完整的示例来说明问题。
-
让我试着创建一个最小的例子
-
我已经设法进一步减少了一点......介意我编辑吗? (我一直在尝试减少它,直到它真的最小......)
-
去做吧。我试过把它变小,但不能:)
-
完成。只有一个可执行语句...
标签: c# generics exception-handling recursion mono