Почему я не могу наследовать от частного класса / интерфейса?

1

Почему это незаконно в С#?

class Foo: Foo.BaseFoo //Circular base class dependency compile time error
{
   private class BaseFoo {...}

   ...
}

Я не спорю, когда это может быть полезно или нет, но я хотел бы знать, в чем причины, запрещающие компиляцию такого кода. Аналогичное ограничение происходит с частными интерфейсами.

ОБНОВИТЬ

Видя, что это дубликат, я больше сосредоточусь на вопросе, почему это неверно с интерфейсами, которые кажутся более полезными?

И, что еще, почему это кажется законным с предварительным просмотром Roslyn, как показано здесь

  • 1
    Чтобы скомпилировать BaseFoo, сначала нужно скомпилировать Foo. Чтобы скомпилировать Foo, сначала необходимо скомпилировать BaseFoo. Чтобы скомпилировать BaseFoo ...
  • 0
    @Fildor: Это не совсем так. Почему Foo должен быть скомпилирован перед BaseFoo в общем случае?
Показать ещё 8 комментариев
Теги:

1 ответ

1

Это не проблема модификатора доступа -that, класс является закрытым. Это циклическая зависимость базового класса. Вы пытаетесь определить класс Foo который наследует вложенный класс BaseFoo.

  • 1
    Почему это круговая зависимость базового класса? BaseFoo не наследуется от Foo .
  • 0
    Разве этот случай не похож на этот stackoverflow.com/questions/265585/… ?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню