如何在基于反射的列表中重写ToString()方法

时间:2018-11-05 20:31:23

标签: c# reflection combobox override tostring

我使用下面显示的代码通过反射列出了基类的所有子类的列表

List<Type> BotNames = typeof(BotPlayer).Assembly.GetTypes().Where(type => type.IsSubclassOf(typeof(BotPlayer))).ToList();

这些子类中的每个子类都有一个ToString()重写,当我使用这些子类的实例的普通列表但当我尝试使用ToString()方法输出反射列表的内容时,它会起作用默认的ToString()方法,当其重写ToString()旨在返回“级别1”时,将提供诸如“ Checkers.Model.BotPlayer1”之类的输出。下面的代码是我测试输出的内容(请记住,我正在使用GUI)

            foreach (var item in BotNames)
        {
            Messages.Text = item.ToString();
        }

如果我可以正确地覆盖ToString()方法,我计划在GUI的组合框中使用它,以便以正确的名称显示反射列表的内容。这是在需要的情况下我在设计器代码中的列表的位置

            this.Difficulty.Items.AddRange(BotNames.ToArray());

难度是组合框的名称

0 个答案:

没有答案