Skip to content
bitzorcas
EN

Guide

添加功能

如何向已有模块添加新功能 — 命令、查询、处理器、验证规则和端点。

Last updated

本指南介绍如何向已有模块添加新功能(例如「归档笔记」)。

功能组件

Application/Sandbox/Notes/
├── ArchiveNoteCommand.cs → 命令 DTO
├── ArchiveNoteCommandHandler.cs → 处理器
└── ArchiveNoteCommandRule.cs → 验证规则
Api/Endpoints/
├── NoteEndpoints.cs → 添加归档端点

步骤 1:定义命令

public record ArchiveNoteCommand(Guid NoteId) : IRequest<Result<Unit>>;

步骤 2:添加验证规则

public class ArchiveNoteCommandRule : IRequestRule<ArchiveNoteCommand>
{
public IReadOnlyList<Error> Validate(ArchiveNoteCommand request)
{
if (request.NoteId == Guid.Empty)
return [Error.Validation("ArchiveNote.Id", "笔记 ID 不能为空")];
return [];
}
}

步骤 3:实现处理器

public class ArchiveNoteCommandHandler : IRequestHandler<ArchiveNoteCommand, Result<Unit>>
{
public async ValueTask<Result<Unit>> Handle(
ArchiveNoteCommand request, CancellationToken ct)
{
// 业务逻辑:验证所有权、设置 IsArchived、提交
return Result<Unit>.Success(Unit.Value);
}
}

步骤 4:添加端点

group.MapPost("/{id:guid}/archive", async (
Guid id, IMediator mediator) =>
{
var result = await mediator.Send(new ArchiveNoteCommand(id));
return result.ToProblemDetails();
});

步骤 5:注册规则

services.AddScoped<IRequestRule<ArchiveNoteCommand>, ArchiveNoteCommandRule>();

另见