У меня есть код на C#, который компилируется как под моно, так и с компиляторами Microsoft .net, но работает только на моно. Сообщение об ошибке (новые строки, добавленные мной)Проблемы с рекурсивным общим типом в C#
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
Вместо того, чтобы дать нам ссылку на большой проект, было бы полезно, если бы вы могли * сообщение * короткий (минимальный), но полный пример, который демонстрирует проблему. –
Позвольте мне попытаться создать минимальный пример – miniBill
Готово. Взял некоторое время :) – miniBill