【发布时间】:2020-10-28 19:32:05
【问题描述】:
所以我有一个名为 SalesRep 的父类和一个名为 SeniorSalesRep 的子类。我得到了它,所以它将两个类多态地显示到一个列表框。我遇到的问题是我有一个组合框,让用户可以选择显示 SalesRep 类中对象的报告,该类还应该显示 SeniorSalesRep 对象,如果只选择 SeniorSalesRep 它只显示 SeniorSales Rep 对象。但是,当我实现它时,它会创建一个名为 object 的额外对象,该对象仅显示 SalesRepObjects 而不是 SeniorSalesRep 对象。如何摆脱组合框中的多余对象?
public void LoadTypeComboBox()
{
List<string> salesRepTypes = new List<string>();
foreach (SalesRep thisSalesRep in allSalesReps)
{
string s = thisSalesRep.GetType().Name;
string baseType = thisSalesRep.GetType().BaseType.Name;
if (!salesRepTypes.Contains(s))
{
salesRepTypes.Add(s);
}
if (!salesRepTypes.Contains(baseType))
{
salesRepTypes.Add(baseType);
}
}
cboObjectType.DataSource = salesRepTypes;
}
private void cboObjectType_SelectedIndexChanged(object sender, EventArgs e)
{
lstSalesReps.DataSource = null;
lstSalesReps.Items.Clear();
foreach (var i in allSalesReps)
{
if (i.GetType().Name == cboObjectType.SelectedItem.ToString())
{
lstSalesReps.Items.Add(i);
}
else if (i.GetType().BaseType.Name == cboObjectType.SelectedItem.ToString())
{
lstSalesReps.Items.Add(i);
}
}
}
【问题讨论】:
标签: c# forms oop combobox polymorphism