我刚刚继承了一个WinForm应用程序。部分代码似乎太相似了。对于每种控件类型,执行相同,只是强制转换。例如:
private void oSelectedControl_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (oSelectedControl.Type == "Advance")
{
oProperties.SelectedObject = ((Advance)oSelectedControl.SelectedControl).Properties;
}
else if (oSelectedControl.Type == "PercentageGauge")
{
oProperties.SelectedObject = ((PercentageGauge)oSelectedControl.SelectedControl).Properties;
}
else if (oSelectedControl.Type == "TrevoMeter")
{
oProperties.SelectedObject = ((TrevoMeter)oSelectedControl.SelectedControl).Properties;
}
.
.
.
}
至少有40个控件继续使用。
有没有办法用泛型来做这件事?
由于
答案 0 :(得分:1)
通过让每个控件继承包含此特定属性的抽象基类,您可以使用继承轻松完成。
abstract class ControlBase
{
abstract object Properties { get; }
}