我使用下面显示的代码通过反射列出了基类的所有子类的列表
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());
难度是组合框的名称