Mar*_*eIV 8 c# ienumerable list generic-list
我有一个List<Location>被调用的子类LocationList.这是我们添加其他属性的便捷方式(IsExpanded比如我们可以在UI中使用的那些.足够好.但是现在,我们希望每个位置都知道它的父级.因此,我们需要在某些事情时得到通知添加到LocationList,但你不能覆盖Add和Remove.虽然我们可以使用ObservableCollection,这更像是一个View/ViewModel构造.这是纯模型数据.
当然我们可以在将父项添加到集合时手动设置父项,但我讨厌这样的非自动化逻辑,因为没有什么可以正确地强制执行它的集合.让集合(好吧,List)自动说'嘿......你被添加了,所以我将你的父母设置为拥有我的班级."就是我所追求的.
我的想法是代替子类List<Location>而不是创建一个List<Location>内部使用的直接类,然后我可以简单地公开我自己的添加/删除方法并处理那里的'父'的调整.但是,这样做会导致内部集合无法枚举,因为它在内部.
也就是说,是否有任何方法可以监听更改List<Location>,或者至少将其IEnumerable包装对象的接口委托给其包装器?
将LocationList更改为继承Collection<Location>.我不知道为什么List<T>没有密封,但它不可扩展.
资料来源:框架设计指南,第二版,第251页:
List<T>以API的清洁和灵活性为代价,针对性能和功耗进行了优化.