【问题标题】:How to provide a readonly Collection that implements INotifyCollectionChanged如何提供实现 INotifyCollectionChanged 的​​只读集合
【发布时间】:2010-07-28 19:54:40
【问题描述】:

是否有一种有效的方法来提供 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            
    }

}

有没有一种简单的方法,也许是 ObservableCollection,或者是否有必要编写一个实现 IEnumerable&lt;SomeType&gt;INotifyCollectionChanged 的包装器,然后将 collectionchanged-evnets 转发到目的地?

【问题讨论】:

    标签: c# vb.net


    【解决方案1】:

    【讨论】:

    • 完美!正是我想要的。谢谢
    【解决方案2】:

    如果您返回内部集合,那么他们总是会弄乱您的数据。您可以只给用户一个ReadOnlyCollection&lt;T&gt;,它是内部数据的克隆。这样一来,他们就可以访问数据,并且您的数据不会面临被损坏的风险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2011-04-24
      相关资源
      最近更新 更多