本指南介绍如何向已有模块添加新功能(例如「归档笔记」)。
功能组件
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>();另见
- 垂直切片 — 模式参考