Я думаю, вы слишком щедры на вложенные классы. Взгляните на это руководство по проектированию вложенных типов.
Не используйте вложенные типы, если выполняются следующие условия:
Фигуры могут принадлежать доске (собрание фигур в качестве члена?), Но могут сосуществовать без нее. Вы можете, например, хотите повторно использовать доски без элементов (темы и т. д.), а также повторно использовать элементы без доски (позиции и т. д.).
Если вы действительно думаете, что вложенные классы имеют смысл для вашего дизайна (см. Наставления Тима Шмелтера), но чувствуете, что размер файла слишком велик, использование частичных классов нормально для разделения вложенного класса определения в свои собственные файлы. Или, если вложенные классы сами по себе достаточно малы, но у вас их много, поместите все вложенные классы в один частичный файл.
Parent.cs:
public partial class Parent
{
void SomeMethod()
{
Nested1 n1 = new Nested1();
Nested2 n2 = new Nested2();
}
}
Nested.cs:
public partial class Parent
{
private class Nested1
{
}
private class Nested2
{
}
}
Для хорошего дизайна класс перемещения Promote должен быть вложен в Пешка, потому что только пешка может продвинуться.
Я не совсем согласен. То, что вы можете вкладывать классы, не означает, что вы должны это делать. Спросите себя, какую пользу вы получаете от вложения этих классов.
Закрытые члены родительского класса доступны для методов Nexted Class.
Nexted класс позволяет снизить сложность без широкой области применения.