Use Case (C#)
Overview
Aplicar o padrão de casos de uso em C# com foco em orquestração de dependências, validações de fluxo, retorno consistente com Result<T> e testes que cubram caminhos de sucesso e falha.
Guidelines
- Implementar interface
IUseCase<TInput, TOutput>ou classe direta com métodoTask<Result<TOutput>> Execute(TInput input). - Manter o use case como orquestrador: valida fluxo, chama repositories/queries e delega invariantes para entidades/VOs.
- Injetar dependências (interfaces) via construtor.
- Tratar falhas cedo (fail-fast) retornando
Result.Failure<T>(errors). - Evitar lógica de persistência ou detalhes de infraestrutura (como SQL ou chamadas HTTP diretas).
Workflow
- Definir Input/Output DTOs e o contrato do use case.
- Identificar dependências necessárias (ICustomerRepository, IEmailService, etc.).
- Implementar
Executecom validações de pré-condição. - Orquestrar a criação/atualização de entidades de domínio.
- Persistir dados usando o repositório.
- Retornar
Result.Success(output)ouResult.Failure(errors). - Criar testes unitários usando mocks para as dependências.
References
- Consultar references/use-case-pattern-cs.md para exemplos e padrões detalhados.
- Consultar
../skills-standards.mdpara convenção global de nomenclatura (seção C#).
Global Standards
- Consultar
../skills-standards.mdpara padrões globais de nomenclatura e convenções gerais entre skills.