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

Ang*_*ker 1 c# readonly observablecollection c#-4.0

请考虑以下代码:

public ObservableCollection<Message> Messages {
   get { return new ObservableCollection<Message>(); }
}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以阻止来电者代码添加/删除/更改项目吗?

编辑:对不起,大家,我只是注意到它是一个骗局,但接受的答案是错误的.

Ind*_*lta 11

那么使用ReadOnlyObservableCollection呢?

代码是:

public ReadOnlyObservableCollection<Message> Messages 
{
  get { return new ReadOnlyObservableCollection<Message>(new ObservableCollection<Message>()); }
}
Run Code Online (Sandbox Code Playgroud)

阅读了有关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;
}
Run Code Online (Sandbox Code Playgroud)