首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提供实现INotifyCollectionChanged的只读集合

如何提供实现INotifyCollectionChanged的只读集合
EN

Stack Overflow用户
提问于 2010-07-29 03:54:41
回答 2查看 293关注 0票数 2

有没有一种有效的方法来提供实现INotifyCollectionChanged的Enumarable<SomeType>或集合,但只能从提供类的内部进行更改。

下面的示例说明了我的意思,但有一个缺点,即调用者可以转换回IEnumerable<SomeType>,然后操作我的内部集合,这是我真正不喜欢的:

代码语言:javascript
复制
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,然后将收集更改的evnets转发到目的地?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-29 03:57:29

使用ReadOnlyObservableCollection

票数 4
EN

Stack Overflow用户

发布于 2010-07-29 03:59:42

如果你返回内部集合,那么他们总是可以扰乱你的数据。您可以只给用户一个ReadOnlyCollection<T>,它是内部数据的克隆。这样,他们就可以访问数据,您的数据就不会有被破坏的风险。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3356896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档