我应该公开ReadOnlyObservableCollection, ReadOnlyCollection, IColl

本文关键字:ReadOnlyCollection IColl ReadOnlyObservableCollection 我应该 | 更新日期: 2023-09-27 18:03:51

基本上,我一直认为应该尽可能返回暴露的基本类型,并在内部考虑实现细节,这是有意义的…

但是,我不知道该怎么做。基本上,现在我有:

ReadOnlyObservableCollection<Foo> MyFoos {get; private set; }

我想知道它是否应该作为ReadOnlyCollection<Foo>ICollection<Foo>返回,因为在内部我从未真正使用任何可观察的部分或试图写入集合。WPF似乎不在乎我返回什么,它仍然绑定它并正确触发集合更改通知事件。但是,我在某处读到,我应该设计这个,让任何消费视图处理我的ViewModel。

所以我有点纠结。我认为把它作为一个ReadOnlyObservableCollection<T>是最有意义的,明确地告诉消费视图他们可以和不可以用属性做什么,但我也有这样的印象,你应该减少类型到他们的基本类型,当你可以。所以我不知道该怎么做。特别是WPF并不关心我返回的是什么类型,它知道它是可观察的

我应该公开ReadOnlyObservableCollection, ReadOnlyCollection, IColl

我可能会将其保留为ReadOnlyObservableCollection,因为它非常具体地说明了允许ViewModel的消费者对您的集合做什么。还要注意,WPF实际上并没有直接绑定到集合,而是绑定到CollectionViewSource的返回值。GetDefaultView,返回一个ICollectionViewICollectionViewINotifyCollectionChanged的合同

从性能角度来看,您至少希望将项源用作实现INotifyCollectionChanged的集合。MVVM提供了很多好处,但主要关注的是单元测试和关注点分离,因此选择是使用ReadOnlyObservableCollection还是像ICollection{T}这样的接口将基于您的单元测试目标。

相关文章:
  • 没有找到相关文章