我有一个类属性,如下所示:

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/

10-10 13:13