gpt4 book ai didi

c# - 我如何检测添加到 C# 4.0 中的通用列表?

转载 作者:太空狗 更新时间:2023-10-29 18:15:22 26 4
gpt4 key购买 nike

我有一个 List<Location> 的子类称为 LocationList .这是我们添加其他属性(如 IsExpanded 等我们可以在 UI 中使用的属性)的便捷方式。足够好。但现在,我们希望每个位置都知道其父位置。因此,我们需要在将某些内容添加到 LocationList 时收到通知,但您不能覆盖 AddRemove。虽然我们可以使用 ObservableCollection,但它更像是一个 View/ViewModel 构造。这是纯模型数据。

当然,我们可以在将其添加到集合时手动设置父级,但我讨厌这样的非自动化逻辑,因为没有任何东西可以正确执行其设置。让集合(好吧,List)自动说“嘿......你正在被添加,所以我会将你的父级设置为拥有我的类。”这就是我所追求的。

我的想法是代替子类 List<Location>而是直接创建一个使用 List<Location> 的类在内部,然后我可以简单地公开我自己的添加/删除方法并在其中处理对“父级”的调整。但是,这样做会破坏枚举内部集合的能力,因为它在内部。

就是说,有什么方法可以监听 List<Location> 的变化吗? ,或者至少委托(delegate)它的 IEnumerable从被包装对象到它的包装器的接口(interface)?

最佳答案

更改您的 LocationList 以继承自 Collection<Location>反而。我不知道为什么List<T>不是密封的,但不可扩展。

来源:框架设计指南,第二版,第 251 页:

List<T> is optimized for performance and power at the cost of cleanness of the APIs and flexibility.

关于c# - 我如何检测添加到 C# 4.0 中的通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com