Создание более ограниченных подклассов на самом деле не является распространенным явлением, потому что это сломало бы потребителей базового класса, которые предполагали, что они имеют доступ к публичным членам. В целом, ваши занятия должны начинаться с ограничений и получать меньше, так как они специализируются, а не наоборот.
Концепция, которую вы ищете, называется «другом» в других языках, но C # (намеренно) не реализует их. InternalsVisibleToAttribte настолько близок, насколько это возможно, но он применяется на уровне сборки, поэтому он может не сработать.
Без дополнительной информации о том, почему вы пытаетесь ограничить доступ таким образом, трудно дать какие-либо хорошие альтернативы общего назначения. Модификаторы доступа, такие как public / private / и т. Д., Не предназначены для обеспечения безопасности, так как Reflection предоставит вам доступ для чтения / записи всего, что угодно. Это скорее подсказка потребителям о том, что безопасно использовать - публичные участники обычно остаются стабильными в новых версиях, в то время как частные (детали реализации) чаще меняются.