c# - Net Core:解决“添加一种方法来打破此属性访问器的递归”
问题描述
我正在尝试创建一个简单的类。ColumnSort 成员是以逗号分隔的文本“Car,Book,Food”中的项目列表。
ColumnSortList 创建一个列表
- 车
- 书
- 食物
C# 和 SonarQube 提到了诸如错误之类的项目
获取:添加一种方法来打破此属性访问器的递归。
Set:在此属性集访问器声明中使用“值”参数
我将如何解决这些问题以使警告/错误(在 SonarQube 中)消失?也可以使代码更高效。
注意: columnSortList 纯粹应该是 ColumnSort 字符串中的只读计算字段。
public class PageModel
{
public int Page { get; set; }
public int Limit { get; set; }
public string ColumnSort { get; set; }
public IEnumerable<string> columnSortList
{
get
{
return columnSortList;
}
set
{
if (ColumnSort == null)
{
columnSortList = null;
}
else
{
columnSortList = ColumnSort.Split(',')
.Select(x => x.Trim())
.Where(x => !string.IsNullOrWhiteSpace(x))
.AsEnumerable();
}
}
}
解决方案
如果columnSortList
打算纯粹是只读的,从 计算ColumnSort
,那么你根本不应该有一个set
方法。所有的逻辑都应该像这样进入get
:
public IEnumerable<string> columnSortList
{
get
{
if (ColumnSort == null)
{
return Enumerable.Empty<string>();
}
else
{
return ColumnSort.Split(',')
.Select(x => x.Trim())
.Where(x => !string.IsNullOrWhiteSpace(x))
.AsEnumerable();
}
}
}