У меня есть класс ClassA
, который является базовым классом других классов. Я хочу, чтобы этот конструктор классов был внутренним и защищенным, так что он не может быть унаследован и создан из-за пределов моей сборки (я не могу сделать его запечатанным, потому что у меня есть другие внутренние классы, наследующие его, вы можете увидеть мой другой связанный с ним вопрос here), поэтому я изменил его, чтобы быть похожим на это:Защищенный внутренний конструктор
public abstract ClassA{
internal protected ClassA(){
}
}
Мне сказали, что это не будет работать, как комбинация internal protected
интерпретируется как internal
ИЛИ protected
, который, по-видимому делает конструктор только protected
:((видимый из наружный)
Вопросы
- Если это правда, то почему
internal protected
интерпретируется какinternal
ИЛИprotected
а не какinternal
Иprotected
? - Есть ли способ объявить конструктор внутренним и защищенным?
Собственно, это неправда. Снаружи сборщика «защищенный» модификатор все еще вступает в игру. Если вы объявляете пустой конструктор только как «внутренний», вы можете наследовать класс вне сборки, но вы не можете добавить к нему настраиваемый конструктор. Если вы сделаете это «защищенным внутренним», тогда вы сможете. – RobinHood70
@ RobinHood70 Я просто ответил на его конкретный запрос. В общем случае вы правы. – Asti