Единственное, чего здесь не хватает, - это зачем вам это делать?
В некоторых библиотеках есть много классов, которые не предназначены для того, чтобы потребитель библиотеки мог их касаться, но они должны наследовать интерфейсы, отмеченные как общедоступные. Например, у меня есть библиотека с классом, который наследует интерфейс IComparer, но он используется только внутри, и я не хочу загромождать публичный аспект моей библиотеки. Если я помечу реализованную функцию сравнения как внутреннюю, компилятор пожалуется, что я не внедряю интерфейс IComparer.
Итак, как мне успешно реализовать интерфейс и в то же время предотвратить его доступность в публичном аспекте моей библиотеки? Отметьте класс как внутренний, а реализованную функцию как общедоступную.