namespace Dpz.Core.WebApi.Models;
/// <summary>
/// 评论查询参数
/// </summary>
public class CommentQueryDto : QueryDtoBase
{
/// <summary>
/// 关联节点
/// </summary>
public CommentNode? Node { get; set; }
/// <summary>
/// 关联ID
/// </summary>
public string? Relation { get; set; }
}
/// <summary>
/// 评论分页查询参数
/// </summary>
public class CommentPageQuery
{
/// <summary>
/// comment node
/// </summary>
[Required]
public CommentNode Node { get; set; }
/// <summary>
/// comment relation
/// </summary>
[Required]
public required string Relation { get; set; }
private const int MaxPageSize = 50;
private const int MinPageSize = 1;
private const int MinPageIndex = 1;
/// <summary>
/// 页容量
/// </summary>
public int PageSize
{
get;
set
{
field = value switch
{
> MaxPageSize => MaxPageSize,
< MinPageSize => MinPageSize,
_ => value,
};
}
} = 10;
/// <summary>
/// 页码
/// </summary>
public int PageIndex
{
get;
set => field = field < MinPageIndex ? MinPageSize : value;
} = 1;
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这段代码定义了两个用于评论查询的数据传输对象(DTO),用于Web API中处理评论相关的查询请求。让我详细解释一下:
1. CommentQueryDto 类
public class CommentQueryDto : QueryDtoBase
这是一个评论查询参数类,继承自 QueryDtoBase:
- Node 属性:
CommentNode?类型,表示评论关联的节点,可为空 - Relation 属性:
string?类型,表示关联ID,可为空
这个类主要用于一般的评论查询场景,参数都是可选的。
2. CommentPageQuery 类
public class CommentPageQuery
这是一个专门用于评论分页查询的参数类,具有以下特点:
必需属性
- Node:使用
[Required]特性标注,必须提供评论节点 - Relation:使用
[Required]和required关键字双重约束,必须提供关联ID
分页控制常量
private const int MaxPageSize = 50; // 最大页容量
private const int MinPageSize = 1; // 最小页容量
private const int MinPageIndex = 1; // 最小页码
智能属性设计
PageSize 属性(页容量):
public int PageSize
{
get;
set
{
field = value switch
{
> MaxPageSize => MaxPageSize, // 超过50则设为50
< MinPageSize => MinPageSize, // 小于1则设为1
_ => value, // 其他情况保持原值
};
}
} = 10; // 默认值为10
PageIndex 属性(页码):
public int PageIndex
{
get;
set => field = field < MinPageIndex ? MinPageSize : value;
} = 1; // 默认值为1
设计特点
- 数据验证:通过属性设置器自动限制分页参数的合理范围
- 默认值:提供合理的默认分页参数(第1页,每页10条)
- 类型安全:使用强类型约束确保数据完整性
- 职责分离:两个类分别处理不同的查询场景
这种设计确保了API接口的健壮性,防止了无效的分页参数,同时提供了良好的开发体验。
AI 正在分析代码…
评论加载中...