是否可以返回调用者无法修改的只读ObservableCollec

是否可以返回调用者无法修改的只读ObservableCollec

考虑以下代码:

public ObservableCollection<Message> Messages {
   get { return new ObservableCollection<Message>(); }
}


我能做些什么来防止呼叫者代码添加/删除/更改项目吗?

编辑:对不起,每个人,我只是注意到这是一个dupe,但是接受的答案是错误的。

最佳答案

关于使用ReadOnlyObservableCollection

代码为:

public ReadOnlyObservableCollection<Message> Messages
{
  get { return new ReadOnlyObservableCollection<Message>(new ObservableCollection<Message>()); }
}


阅读有关ReadOnlyObservableCollection Anti Pattern的信息后,我意识到上面的方法不是一个好方法,并且可能导致细微的错误。建议的方法是:

public class MyClass
{
  public MyClass()
  {
    myCollection = new ObservableCollection<Message>();
    myReadOnlyCollection = new ReadOnlyObservableCollection<Message>(myCollection);
  }

  public ReadOnlyObservableCollection<Message> Messages
  {
    get { return myReadOnlycollection; }
  }

  private readonly ObservableCollection<Message> myCollection;
  private readonly ReadOnlyObservableCollection<Message> myReadOnlyCollection;
}

关于c# - 是否可以返回调用者无法修改的只读ObservableCollection?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6346948/

10-10 21:59