Один очевидный случай - когда метод получает или возвращает внутренний тип.Например, основные методы классов WPF Transform обрабатывают некоторые внутренние типы взаимодействия, которые WPF не предоставляет в качестве части своего открытого API.Поскольку подпись включает внутренние типы, метод не может быть открытым или защищенным.И все же ясно (уместно!), Чтобы различные классы Transform работали полиморфно.Поэтому базовые методы в Transform / GeneralTransform должны быть внутренними.
Другая, но связанная с этим причина - предотвращение внешнего деривации.В конце концов, архитекторы WPF могли бы раскрыть «безопасную» версию внутренних типов взаимодействия в защищенном абстрактном методе, чтобы пользователи могли создавать свои собственные классы Transform.Они этого не сделали, потому что не хотели справляться с тем, как люди могут использовать эту возможность, например, создавать неаффинные преобразования.Разрешение внешнего деривации сделало бы работу других классов в WPF намного более сложной, поэтому архитекторы решили разрешить только «одобренные» производные классы, сделав абстрактный метод внутренним.