【问题标题】:what are the advantages of using compositecollection rather than an observablecollection<interface>?使用compositecollection 而不是observablecollection<interface> 的优点是什么?
【发布时间】:2013-11-13 22:46:13
【问题描述】:

我需要一个适用视图模型的列表,并且正在讨论是尝试制作复合集合还是创建它们继承的共享接口。一种方法是首选吗?

我假设复合集合维护独立于基础集合的项目索引,因此可以拥有 复合集合项# 0(项目类型A)1(项目类型B)2(项目类型A)3(项目类型A),并保持列表中的顺序。

这两种方法有什么主要区别吗?

我想我会更详细地解释一下我通常会做什么。通常我需要一个 selectedItems 列表,我可以创建一个 Object 类型的 ObservableCollection,然后让树视图根据数据类型应用不同的数据模板。然而,我认为最好有一些类型安全并且知道不只是任何对象都被抛出到集合中,所以我实现了一个接口。然而,有时我觉得很可笑,因为实现接口的对象之间没有足够的共享属性,所以我觉得尝试制作一个共享接口很可笑。

用每个可能类型的单独列表来实现复合集合可能更有意义。

【问题讨论】:

    标签: c# wpf compositecollection


    【解决方案1】:

    根据msdn(在 CompositeCollection 上):

    允许多个集合和项目显示为单个列表。

    除非这是您需要的(我认为不需要),否则您应该选择ObservableCollection&lt;T&gt;。由于它是通用的,因此可以避免不必要的、容易出错的铸件。当与值类型一起使用时(即,没有装箱/拆箱),无需转换其元素也可以提高性能。

    此外,如果不了解更多有关视图模型的信息,很难判断让所有视图模型都实现共享接口是否是一个好的选择。问问自己:这有意义吗?他们之间真的有关系吗?集合的客户端是否能够平等对待该接口的实例,而不管它们的实际类型如何?

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 2010-09-15
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      相关资源
      最近更新 更多