gpt4 book ai didi

c# - MVVM - 我应该公开 ReadOnlyObservableCollection、ReadOnlyCollection、ICollection 等吗?

转载 作者:太空狗 更新时间:2023-10-30 00:21:10 30 4
gpt4 key购买 nike

基本上,我一直认为您应该尽可能返回公开的基类型,并在内部担心实现细节,这是有道理的...

但是,我不确定在这里做什么。基本上,现在我有:

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

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

所以我在这里有点纠结。我想把它留作 ReadOnlyObservableCollection<T>明确地告诉消费 View 他们可以用属性做什么和不能做什么是最有意义的,但我也觉得你应该尽可能地将类型减少到它们的基本类型。所以我不确定在这里做什么。特别是考虑到 WPF 不关心我返回什么类型,它认为它是可观察的。

最佳答案

我可能会将其保留为 ReadOnlyObservableCollection,因为它非常明确地说明了允许 ViewModel 的使用者对您的集合执行的操作。另请注意,WPF 实际上并不直接绑定(bind)到您的集合,它绑定(bind)到 CollectionViewSource.GetDefaultView 的返回值。 ,它返回一个 ICollectionViewICollectionView 在其契约(Contract)中有 INotifyCollectionChanged

关于c# - MVVM - 我应该公开 ReadOnlyObservableCollection、ReadOnlyCollection、ICollection 等吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874854/

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