2015-11-07 56 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

它不需要是抽象類,因爲基類沒有實現任何邏輯,所以在這種情況下,接口更適合於恕我直言。 –

相關問題