C#中两种不同类型的列表

时间:2008-11-25 13:15:31

标签: c# listview list

我目前正在为我的客户购买ShoppingCart。

他希望能够在CartItems之间添加Text,所以我想知道是否还有一些方法仍然只有一个List。

我的解决方案是拥有两个列表,一个类型IList,在计算重量和购物车的整体价格时迭代,同时拥有另一个IList,它只公开在ListView中显示它的必要字段,这是一个SuperType CartItem。 (但是,如何访问listView的其他字段,在Description-Text-Class中将默认权重和价格设置为0会破坏LSP)。

但是有两个列表感觉有点奇怪(并且仍然给我带来问题),所以我想知道我是否可以使用TypedList来指定每个项目的类型。

欢迎任何建议,我对两种选择都不满意。

3 个答案:

答案 0 :(得分:18)

使用界面:

 ICartListItem

并将您的列表设为:

 List<ICartListItem>

现在,创建几种类型,让它们全部实现此界面,您可以将它们安全地存储在列表中。

或者,如果您希望CartItem中有一些默认逻辑,请使用基类而不是接口。

答案 1 :(得分:1)

您可以创建一个类,并在其中定义所需列表类型的属性,然后创建相同类的列表。

例如,如果我想列出stringbool的列表,我会在一个类中创建两个属性,然后创建该类的列表。

答案 2 :(得分:0)

界面听起来有点矫枉过正。我只是在当前的CartItem中添加一个名为“TextAfterItem”的属性。

另外:确保您的客户在安全开销方面了解此功能的成本。听起来他们认为这应该是一个简单的更新,但是您允许用户输入将直接显示回页面的文本,这是一个危险的主张。