Jedyne, czego brakuje w odpowiedzi, to dlaczego miałbyś to zrobić?
Niektóre biblioteki mają wiele klas, które nie są przeznaczone do dotykania przez konsumenta biblioteki, ale muszą dziedziczyć interfejsy oznaczone jako publiczne. Na przykład mam bibliotekę z klasą, która dziedziczy interfejs IComparer, ale jest używana tylko wewnętrznie i nie chcę zaśmiecać publicznego aspektu mojej biblioteki. Jeśli oznaczę zaimplementowaną funkcję Compare jako wewnętrzną, kompilator narzeka, że nie implementuję interfejsu IComparer.
Jak więc z powodzeniem wdrożyć interfejs i jednocześnie uniemożliwić dostęp do niego w publicznym aspekcie mojej biblioteki? Oznacz klasę jako wewnętrzną, ale zaimplementowaną funkcję jako publiczną.