Прежде всего, пожалуйста, не используйте SCREAMING CAPS в C #. Используйте PascalCaseIdentifiers (или camelCaseIdentifiers для местных жителей); их гораздо приятнее читать.
Во-вторых, возможно, вам не хватает некоторых состояний. Неплохая идея отследить, находится ли игра в состоянии, когда разрешен захват en passent . У вас также нет состояния для тупиковой ситуации или других "нарисованных" ситуаций.
В-третьих, чтобы ответить на ваш актуальный вопрос: ошибка говорит вам, что не так. «State» и «GameState» имеют противоречивую доступность. Вы не добавили модификатор доступности в State, поэтому он получает доступность по умолчанию, которая является «внутренней» для перечисления верхнего уровня. «GameState» является публичной собственностью публичного класса. Таким образом, вы говорите, что «тип этой вещи, который доступен для общественности, является внутренней деталью реализации моей сборки», что, очевидно, кажется немного невозможным, поэтому компилятор помечает это.
Первый вопрос, который я хотел бы задать себе: «Почему класс публики?» Намереваетесь ли вы создать этот класс с помощью сборок вне этого?
Если вы хотите, чтобы класс был общедоступным, тогда:
- сделать собственность частной или внутренней, или
- сделать перечисление общедоступным
Если вы хотите, чтобы класс был внутренним, сделайте его внутренним.