SonarQube:添加一种方法来突破此方法递归 C#

SonarQube: Add a way to break out of this methods recursion C#

我们最近开始在我们的项目中使用 SonarQube。因此,当我构建项目时,它给出了一个严重错误:“添加一种方法来打破此方法的递归”。这是代码

private Bool SetProperty<T>(T storageField, T value, [CallerMemberName] string pName= "" )
  {
    return SetProperty<T>(storageField, value, pName);
  }

你们知道如何以 SonarQube 不会抱怨的方式解决这个问题吗?

您的方法正在调用自身,您必须打破递归模式。

"Add a way to break out of this method's recursion"

如前所述,您需要打破常规,它会一遍又一遍地调用自己。看来你正在尝试实现 INotifyPropertyChanged 接口,假设因为你已经标记了 wpf.

尝试如下更改您的日常活动:

protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propName = "")
{
   if (EqualityComparer<T>.Default.Equals(storage, value)) return false;
      storage = value;
      OnPropertyChanged(propName);
      return true;
}

在上面的例程中,我正在检查 value 是否与 storage 不同,如果相同,我们不需要再进一步,因此我们可以 return false,否则我们可以做我们的 PropertyChanged 和 return true.