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

问题描述

| 考虑以下代码
public ObservableCollection<Message> Messages {
   get { return new ObservableCollection<Message>(); }
}
我能做些什么来防止呼叫者代码添加/删除/更改项目吗? 编辑:对不起,每个人,我只是注意到这是一个骗子,但是公认的答案是错误的。     

解决方法

        怎样使用ReadOnlyObservableCollection 代码为:
public ReadOnlyObservableCollection<Message> Messages 
{
  get { return new ReadOnlyObservableCollection<Message>(new ObservableCollection<Message>()); }
}
阅读了aboutReadOnlyObservableCollection 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;
}
    ,        为什么需要只读的ObservableCollection。 如果此收藏集是只读的,则无需观察它。 考虑一个集合     ,        传回
ReadOnlyObservableCollection
private ReadOnlyObservableCollection<Message> _Messages;

public ReadOnlyObservableCollection<Message> Messages {
   get { this._Messages = this._Messages ?? new ReadOnlyObservableCollection(new ObservableCollection<Message>()); return this._Messages; }
}
    ,        怎样使用ReadOnlyObservableCollection