代码之家  ›  专栏  ›  技术社区  ›  HCL

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

  •  2
  • HCL  · 技术社区  · 14 年前

    Enumarable<SomeType> 或者实现INotifyCollectionChanged但只能从提供类内部更改的集合。

    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            
        }
    
    }
    

    IEnumerable<SomeType> INotifyCollectionChanged 然后将收集更改的EVNET转发到目的地?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Franci Penov    13 年前
        2
  •  1
  •   Scott M.    14 年前

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