Эта структура кажется мне совершенно разумной.До сегодняшнего дня я не знал, что Microsoft посоветовал не делать этого, но я все еще не знаю, почему они посоветовали так.
Я использовал эту структуру в ситуации, когда только вложенный класссуществует для поддержки содержащего класса (т.е. это часть его реализации), но другие классы должны иметь возможность видеть его, чтобы взаимодействовать с содержащим классом (т.е. это часть API класса).
ЭтоСказано, что Эрик, как правило, знает, о чем говорит, поэтому из уважения к его знаниям и на данный момент я преобразовал эти классы для использования пространств имен.
В настоящее время мне не нравятся результаты,У меня есть класс с именем BasicColumn, который существует только для представления столбца в классе с именем Grid.Ранее этот класс всегда назывался Grid.BasicColumn, и это было здорово.Это именно то, как я хочу, чтобы это упоминалось.Теперь, когда Grid и BasicColumn находятся в пространстве имен Grids, его просто называют BasicColumn с «использованием Grids» в верхней части файла.Ничто не указывает на его особую связь с Grid, если только я не хочу печатать все пространство имен (в котором есть несколько префиксов перед Grid, который я оставил для простоты).
Если кто-то может указать фактическую причинупочему использование общедоступных вложенных классов является каким-то контрпродуктивным или неоптимальным, если не считать того факта, что Microsoft не намерена использовать их таким образом, тогда я бы хотел это услышать.