C# 如何用类型填充组合框

C# 如何用类型填充组合框,c#,types,combobox,enums,C#,Types,Combobox,Enums,我正在为我的游戏创建一个编辑器,作为C语言中的windows窗体项目。 在许多情况下,我希望用父类的所有可能派生类型填充组合框。例如,您正在添加一个项目,所以您可以从列表中选择武器、盔甲、弹药、消耗品、货币等。这些都是从该项目派生的类 目前,我为列表中的每种类型手动定义了一个包含一个成员的枚举,然后使用该枚举填充组合框中的选项。然后我需要两个字典:一个从枚举到类型,另一个从类型到枚举。通过这种方式,我可以刷新组合框以显示选中的项目的类型,并且当组合框接受用户输入时,我可以用新实例化的项目替换项目

我正在为我的游戏创建一个编辑器,作为C语言中的windows窗体项目。 在许多情况下,我希望用父类的所有可能派生类型填充组合框。例如,您正在添加一个项目,所以您可以从列表中选择武器、盔甲、弹药、消耗品、货币等。这些都是从该项目派生的类

目前,我为列表中的每种类型手动定义了一个包含一个成员的枚举,然后使用该枚举填充组合框中的选项。然后我需要两个字典:一个从枚举到类型,另一个从类型到枚举。通过这种方式,我可以刷新组合框以显示选中的项目的类型,并且当组合框接受用户输入时,我可以用新实例化的项目替换项目

这一切都很好,手动键入一个枚举和两个字典,只是从代码库中已经存在的内容列表中显示和选择,这似乎是一段糟糕的代码


我怎样才能做得更好呢?

您可以使用反射来获取所有具有项的基本类型的类类型,并用该数据填充组合框;然后告诉它要向用户名显示哪种类型的属性


这似乎是一个完美的反思环境。
foreach (var item in Assembly.GetExecutingAssembly().GetTypes()
                             .Where(x => x.BaseType == typeof(Item)))
{
    comboBox1.Items.Add(item);
}

comboBox1.DisplayMember = "Name";