集合属性应该是只读的

我使用FxCop作为我的WPF MVVM程序集,它给了我错误

集合属性应该是只读的

但是在我的属性中我需要RaisePropertyChangedEvent,现在如果我通过删除它的set部分将该属性设置为只读,我怎么能引发这个事件。

语法有点像这样

public List Employees { get { return _employees; } set { if (ReferenceEquals(_employees, value)) return; _employees = value; RaisePropertyChanged("Employees"); } } 

您应该很少需要在集合上引发PropertyChanged事件。 使集合可观察,以便在添加或删除项目时通知任何绑定:

 public IList Employees { get; private set; } // in your constructor: this.Employees = new ObservableCollection(); 

如果您将集合设置为ObservableCollection,那么“重要”事件将是在集合中添加和删除项目时,而不是在集合实例化时。 我同意FxCop。 使集合只读,但使其成为ObservableCollection