Curiously Recurring Generics
От: nikov США http://www.linkedin.com/in/nikov
Дата: 10.11.06 15:08
Оценка:
Господа, почему не компилируется код?

class Base<T>
{
    public class Nested { }
}

class Derived : Base<Derived.Nested> // error CS0426: The type name 'Nested' does not exist in the type 'Derived'
{ }


Сообщение об ошибке, выдаваемое компилятором, не соответствует действительности, так как типы, вложенные в базовый класс, наследуются производными классами.

Следующие два примера компилируются успешно.

class Base<T>
{
    public class Nested { }
}

class Derived : Base<Base<int>.Nested>
{ }


class Base<T>
{
    public class Nested { }
}

class Derived : Base<Derived>
{ }


Я так и не нашел в спецификации правила, которое бы запрещало первый вариант.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.