2015-11-07 74 views
-1

我刚刚继承了一个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

泛型没有帮助。但是,由于缺乏定义所需属性的通用基类型,我会试图使用反射。 – Richard

回答

1

可以通过使用继承容易做到这一点通过使每个控件的继承包含该特定属性抽象基类。

abstract class ControlBase 
{ 
    abstract object Properties { get; } 
} 
+0

它不需要是抽象类,因为基类没有实现任何逻辑,所以在这种情况下,接口更适合于恕我直言。 –