2008-11-25 80 views
4

我目前有一個ShoppingCart爲我的客戶的問題。在C中的兩種不同類型的列表#

他希望能夠在CartItems之間添加文本,所以我想知道是否還有一些方法仍然只有一個List。

我的解決方案是有兩個列表,其中一個是在計算重量和購物車總體價格時迭代的IList類型,而另一個IList只顯示在ListView中顯示它所需的字段,這是一個CartItem的超類型。 (但是,如何訪問listView的其他字段,在Description-Text-Class中將默認權重和價格默認爲0將會中斷LSP)。

但有兩個列表感覺有點奇怪(但仍然給我的問題),所以我想知道如果我可以做某種類型的列表,我指定每個項目的類型。

歡迎任何建議,我對這兩種選擇都不滿意。

回答

18

使用的接口:

ICartListItem 

,讓您的列表是:

List<ICartListItem> 

現在,創建多種類型,有個個實現這個接口,你可以把它們全部安全地存儲你的清單。

或者,如果您希望CartItem中存在某種默認邏輯,請使用基類而不是接口。

+0

嗨, 我曾經想過那種接口方法。但我認爲我會違反LSP,因爲CartListItem具有附加屬性(重量,價格),而TextListItem只有文本。 但是現在我想起來這並不是什麼大問題。 – Tigraine 2008-11-26 09:03:20

0

界面聽起來像是過度殺傷。我只是將一個屬性添加到當前名爲「TextAfterItem」的CartItem中。

另請確保您的客戶瞭解此功能在安全開銷方面的成本。這聽起來像是他們認爲這應該是一個簡單的更新,但是你允許用戶輸入將直接顯示回頁面的文本,這是一個危險的提議。

+0

downvote的原因是什麼? – 2008-11-25 16:17:53

1

您可以創建一個類,並在其中定義所需列表類型的屬性,然後創建一個相同類的列表。

例如,如果我想列出string s和bool s,我會在一個類中創建兩個屬性,然後創建該類的列表。