是否有一种有效的方法来提供实现INotifyCollectionChanged的Enumarable<SomeType>
或集合,但只能从提供类的内部进行更改。
以下示例显示了我的意思,但缺点是调用者可以强制转换IEnumerable<SomeType>
然后操纵我的内部集合,我真的不喜欢这样:
public class DemoClass{
ObservableCollection<SomeType> m_collection=
new ObservableCollection<SomeType>();
public IEnumerable<SomeType> SomeTypeInstances{
get{return m_collection;}
}
private void AMethod(){
// Here I can work with m_collection
}
}
是否有一种简单的方法,可能使用ObservableCollection,或者是否需要编写实现IEnumerable<SomeType>
和INotifyCollectionChanged
的包装器,然后将collectionchanged-evnets转发到目标?
答案 0 :(得分:4)
答案 1 :(得分:1)
如果您返回内部集合,那么他们总是会弄乱您的数据。你可以给用户一个ReadOnlyCollection<T>
,它是内部数据的克隆。这样,他们就可以获取数据,并且您的数据不会有被破坏的风险。