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

2024-05-26

我目前在为客户提供购物车时遇到问题。

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

我的解决方案是有两个列表,其中一个是 IList 类型,在计算购物车的重量和总体价格时会迭代,而另一个 IList 只公开在 ListView 中显示所需的字段,并且是 CartItem 的超类型。 (但是我如何访问 listView 的其他字段,在描述文本类中将重量和价格默认为 0 会破坏 LSP)。

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

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


使用接口:

 ICartListItem

并将您的清单设置为:

 List<ICartListItem>

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中两种不同类型的列表 的相关文章

随机推荐

  • 如何避免在 ASP.NET 代码隐藏中编写混乱的 JavaScript?

    我想知道在 ASP NET 中使用 Javascript 的最佳实践是什么 我不知道这是否是最佳实践 但我在代码隐藏中添加了 javascript 客户端事件 它工作正常 但这是最佳实践吗 例如 我有一个单选按钮控件 并在 Page Ini
  • 如何复制/克隆一个既不派生又不派生的结构?

    我正在尝试用 Piston 进行一些游戏编程 但我正在努力解决opengl graphics Texture 因为它没有导出Copy or Clone extern crate piston window extern crate pist
  • 如何使用亚马逊商品广告 API 获取 ItemLookup/Search 的 JSON 响应

    我正在尝试从亚马逊产品的 ASIN 中获取其详细信息 产品 API 允许执行 ItemlookupASIN 但返回值在XML 我想从客户端调用 Itemlookup 所以想做一个JSONP打电话 我找不到 我在网上找到了一些将XML转换为J
  • ' aria-label='类型错误:不支持的类型 '> 类型错误:不支持的类型

    我需要在 GPU 中运行代码的某些部分cupy代替numpy 所以 我只对这一行做了评论 import numpy as np并用这一行代替它import cupy as np 完整代码 from imutils video import
  • 在 jQuery 中,如果我有一个开始类和结束类,我如何用 div 包装多个元素

    好的 这里有一些 html 我有一些开始和结束课程 但为此我只添加了每门课程 1 门 div span nbsp span div div span nbsp span div div class start lt start span n
  • 如何知道哪个本地应用程序连接到我的套接字(Windows)

    我有一个绑定到某个 TCP 端口的 Windows 服务 该端口用于我的应用程序之间的 IPC 有没有一种编程 WinAPI WinSocket 等 方法可以知道哪个应用程序连接到我的端口 即在我的 Windows 服务中 我想获取连接到我
  • 如何从用户的 5 个输入中找到最大值? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如果用户输入五个值 如何找到这 5 个值之间的最大值 cin gt gt a gt gt b gt gt c gt gt d gt gt e
  • 有没有办法在@Service上使用@ControllerAdvice

    我有一个项目需求 但我没有任何需求 Controller or RestController但我需要为我的服务层提供一个全局异常处理程序 所以我需要配置 ControllerAdvice on Service 请告诉我是否还有其他方法可以做
  • 实体框架代码优先查找与 SingleOrDefault(预加载)

    我正在使用 Entity Framework 4 2 代码优先 来访问我的数据库 我假设如果我使用查询一个实体SingleOrDefault如果实体尚未被跟踪 它只会查询数据库 但情况似乎并非如此 这Find另一方面 方法似乎确实在这样做
  • NestJS - 请求超时

    如何为所有请求设置超时 如果超时则使用自定义 json 进行响应 我尝试使用 import as timeout from connect timeout import NestFactory from nestjs core import
  • Windows 8中有没有特殊的API来挂载ISO文件?

    您可能知道 Windows 资源管理器允许将 ISO 文件装载到虚拟驱动器 有没有任何API可以用来做到这一点 本机函数调用AttachVirtualDisk https msdn microsoft com en us library w
  • 如何备份/恢复corda节点?

    一旦 Corda 节点发生故障 恢复的适当流程是什么 Corda 交易仅与特定业务网络的合格节点共享 而不是与每个节点共享 因此 在恢复故障节点时 从其他节点复制数据将无法正常工作 需要从备份中恢复 但是 备份映像对于其他正确的节点并不完全
  • .m2 的 Docker 缓存在本地不起作用

    考虑这个 gitlab ci yml variables MAVEN OPTS Dmaven repo local root m2 repository cache key M2 paths root m2 repository 当直接在
  • 活动丢失后终止异步任务

    这是我的过程和问题 在此应用程序中 您单击菜单按钮 在此菜单中 您按下切换按钮 该按钮将启动异步任务 每 30 秒发出一次提示音 该任务是在选中切换时持续运行 并在取消选中时取消 只要您留在菜单窗口中 就可以启动和停止该过程 检查切换框 如
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • 在 Retrofit 中的 POST 请求中发送空正文

    我的 api 需要一个空的 json 主体 发出帖子请求时 如何在 Retrofit 和 Jackson 中进行设置 我尝试通过null 和空字符串 以及 但无法让它发挥作用 POST my url Call
  • ASP.NET MVC 3 身份验证/授权 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 ASP NET MVC 3 以及一般的 MVC 非常陌生 在 ASP NET Web 窗体中 我使用主体和身份进行身份验证 这是在 MVC 中推
  • Angular2:嵌套 *ngFor 导致“表达式在检查后已更改”

    我有一个 angular2 组件 my tree 我在父 my app 组件中使用它 我的应用程序 如下 Component selector my app providers template
  • html datalist元素自动建议行为

    我注意到 当您将文本字段连接到数据列表时 不同的浏览器在建议文本字段值方面有不同的行为 某些浏览器显示的条目正是以 开始您输入的内容 IE 旧版 chrome 版本 而其他显示的条目contain您作为子字符串输入的内容 firefox 较
  • C# 中两种不同类型的列表

    我目前在为客户提供购物车时遇到问题 他希望能够在 CartItems 之间添加文本 所以我想知道是否有某种方法仍然只有一个列表 我的解决方案是有两个列表 其中一个是 IList 类型 在计算购物车的重量和总体价格时会迭代 而另一个 ILis