Почему это незаконно в С#?
class Foo: Foo.BaseFoo //Circular base class dependency compile time error
{
private class BaseFoo {...}
...
}
Я не спорю, когда это может быть полезно или нет, но я хотел бы знать, в чем причины, запрещающие компиляцию такого кода. Аналогичное ограничение происходит с частными интерфейсами.
ОБНОВИТЬ
Видя, что это дубликат, я больше сосредоточусь на вопросе, почему это неверно с интерфейсами, которые кажутся более полезными?
И, что еще, почему это кажется законным с предварительным просмотром Roslyn, как показано здесь
Это не проблема модификатора доступа -that, класс является закрытым. Это циклическая зависимость базового класса. Вы пытаетесь определить класс Foo
который наследует вложенный класс BaseFoo
.
BaseFoo
не наследуется от Foo
.
Foo
должен быть скомпилирован передBaseFoo
в общем случае?