我有一个类属性,如下所示:
public List<Recipe> RecipeList
{
get { return this._recipeList; }
set
{
this._recipeList = value;
OnPropertyChanged("RecipeList");
}
}
在另一种方法中,我有以下引用上面的属性的方法。
private void RecipeSearch()
{
this.RecipeList = RecipeManagerService.SearchByUnit(SearchCriteria)
.Where(recipe => recipe.IsApproved == true && !recipe.IsHidden).ToList();
}
代码分析发出CA 2227警告:通过删除 setter ,将RecipeList更改为只读。谁能告诉我为什么?
最佳答案
在List<T>
对象上添加公共(public) setter 很危险。您可以通过将设置员设为私有(private)来消除此警告:
public List<Recipe> RecipeList
{
get { return this._recipeList; }
private set
{
this._recipeList = value;
OnPropertyChanged("RecipeList");
}
}
这仍将允许您的类更改此方法,但不能更改外部源。
关于C#-代码分析2227困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5554566/