我有幾個抽象類,在我的項目中有一些UserControls
的核心功能。我也有兩個派生自Abstract類的獨立實現;我們打電話給他們AbstractImpl1
和AbstractImpl2.
另外,我有Collections
的摘要UserControls
,我在幾個地方迭代。處理抽象類的不同實現的集合的乾淨方式?
我遇到的問題是InvalidCastExceptions
- 我需要遍歷實現而不是抽象UserControls來獲取某些屬性(可視化)。除了做一個try/catch
之外,有沒有一種乾淨的方式來處理這個問題?
例子:
在我的項目我有抽象類:AbsUserControl
然後我讓他們兩個單獨的實現:AbstractImpl1
和AbstractImpl2
在我的主要形式,我有ObservableCollection<AbsUserControl> absControlCollection
然後通過項目迭代我做foreach(AbstractImpl1 userControl in absControlCollection)
能夠訪問視覺方面。問題是ObservableCollection<AbsUserControl> absControlCollection
可能由AbstractImpl1
或AbstractImpl2
對象組成。
有沒有一個乾淨的方式來處理這個問題?現在,我遍歷absControlCollection
中的對象的每個地方都用try/catch
塊圍繞它,嘗試遍歷AbstractImpl1
對象,然後捕獲InvalidCastException
並繼續遍歷AbstractImpl2
對象。
讓我知道是否需要更多信息。謝謝!
你的意思是集合是_all_'Impl1'或_all_' Impl2',從來沒有混合? – Rawling
@Rawling現在的集合可以是'Impl1'或'Impl2',但有可能我希望以後在 – Saggio