目前我的客户的 ShoppingCart 有问题。
他希望能够在 CartItems 之间添加文本,所以我想知道是否有某种方法仍然只有一个列表。
我的解决方案是有两个列表,一个是 IList 类型,它在计算购物车的重量和总价格时被迭代,而另一个 IList 只公开在 ListView 中显示它的必要字段,这是一个 SuperType购物车项目。 (但是我如何访问 listView 的其他字段,在 Description-Text-Class 中默认重量和价格为 0 会破坏 LSP)。
但是有两个列表不知何故感觉有点奇怪(而且仍然给我带来问题),所以我想知道我是否可以做某种 TypedList,在其中我指定每个项目的类型。
欢迎提出任何建议,我对这两个选项都不是很满意。
最佳答案
使用接口(interface):
ICartListItem
让你的 list 成为:
List<ICartListItem>
现在,创建几个类型,让它们都实现这个接口(interface),然后你就可以将它们安全地存储在你的列表中。
或者,如果您希望 CartItem 中有一些默认逻辑,请使用基类而不是接口(interface)。
关于c# - C# 中两种不同类型的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/317279/