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)