Как переопределить метод ToString () в списке на основе отражений - PullRequest
0 голосов
/ 05 ноября 2018

Я составил список всех подклассов базового класса, используя отражение, используя код, показанный ниже

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());

Сложность - это название поля со списком

...