C# 中递归泛型类型的问题



我有一些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

这是一个已知问题。 它可能被报告为编译器错误。

http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf(第129页)

至于在Mono中工作,就

规格而言,Mono工作有几个地方被"破坏"。

(递归 lambda 是另一个在 Mono 中工作的东西的例子,不应该)

最新更新