爲SO編寫另一個問題,我得到了一個我經常使用的模式,但我從未真正反映過。但現在,我不能確定這是否是正確的方式:返回IEnumerable <T>是否是一個很好的習慣實現INotifyCollectionChanged的集合
如果我有我的WPF控件將綁定到的集合,我幾乎總是返回IEnumerable<SomeType>
。然而在內部,這在大多數情況下是ReadOnlyObservableCollection<SomeType>
。我從來沒有遇到過這個問題,並且所有消費控件都會正確更新,因爲它們會檢查INotifyCollectionChanged
-界面,所以不會令人驚訝。
但我現在的問題是,如果這是不好的做法,在簽名中只聲明IEnumerable<SomeType>
而不是返回(也取決於)更強大的東西(INotifyCollectionChanged
)。
更新:
我試圖澄清:
我的主要目的是返回一個IEnumerable<SomeType>
。但大多數時候,返回的IEnumerable<SomeType>
也執行INotifyCollectionChanged
如ReadOnlyObservableCollection<SomeType>
呢。消費控制相應地綁定(我的第二個意圖是什麼)。
也許我應該問:是否有一個接口完全包含IEnumerable和INotifyPropertyChanged。
我不知道你在說什麼。一些示例代碼來顯示您所指的模式會很有幫助。 – 2010-07-28 20:08:40
我很好理解這個問題。我經常對List <>做同樣的事情。 – Marcel 2010-07-28 20:18:18
很晚了,但我已經這麼做了很多年,但今天遇到了一個破壞它的案例: - 我有一個屬性聲明爲IEnumerable,由ObservableCollection 支持。 奇怪的是,綁定控件(數據網格)未能注意何時將項目添加到集合中,因此可能沒有收到通知。 –
2015-06-25 16:00:07