4

我目前在为我的客户使用 ShoppingCart 时遇到问题。

他希望能够在 CartItems 之间添加文本,所以我想知道是否有某种方法仍然只有一个列表。

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

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

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

4

3 回答 3

19

使用接口:

 ICartListItem

并使您的清单成为:

 List<ICartListItem>

现在,创建几个类型,让它们都实现这个接口,你就可以把它们都安全地存储在你的列表中。

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

于 2008-11-25T13:20:29.297 回答
1

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

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

于 2012-09-13T07:36:16.210 回答
0

界面听起来有点矫枉过正。我只需向您当前的 CartItem 添加一个名为“TextAfterItem”之类的属性。

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

于 2008-11-25T14:28:01.643 回答