Я составил список всех подклассов базового класса, используя отражение, используя код, показанный ниже
List<Type> BotNames = typeof(BotPlayer).Assembly.GetTypes().Where(type => type.IsSubclassOf(typeof(BotPlayer))).ToList();
Каждый из этих подклассов имеет переопределение ToString (), которое работает, когда я использую обычный список экземпляров этих подклассов, но когда я пытаюсь вывести содержимое списка отражения с помощью метода ToString (), он использует метод ToString () по умолчанию, который выдает выходные данные, такие как «Checkers.Model.BotPlayer1», когда его переопределение ToString () должно возвращать «Уровень 1». Код ниже - это то, на чем я протестировал вывод (имейте в виду, что я работаю с использованием графического интерфейса)
foreach (var item in BotNames)
{
Messages.Text = item.ToString();
}
Если я могу правильно переопределить метод ToString (), я планирую использовать его в поле со списком в моем графическом интерфейсе, чтобы содержимое списка отражений отображалось с правильными именами. Вот где у меня есть список в коде конструктора на случай, если требуется
this.Difficulty.Items.AddRange(BotNames.ToArray());
Сложность - это название поля со списком