Domain Service (C#)
Overview
Aplicar o padrão de serviço de domínio em C# para encapsular regras que não pertencem naturalmente a uma única entidade/VO, mantendo lógica pura e independente de infraestrutura.
Guidelines
- Considerar domínio apenas dentro de namespaces
Project.Module.Domain. - Manter o serviço sem dependência de framework, HTTP, banco, ASP.NET Core ou estado global.
- Preferir classes
staticpara funções puras ou interfaces/implementações injetáveis se houver necessidade de polimorfismo (raro em serviços de domínio puros). - Receber dados de domínio (entities, VOs) e retornar tipos simples ou valores de domínio.
- Nomear por intenção de regra (
*Policy,*Calculator,*Resolver,*Specification).
Workflow
- Confirmar que a classe alvo está em namespace de domínio.
- Identificar a regra transversal que não cabe em uma única entidade.
- Definir API mínima (classe static ou interface/impl).
- Implementar regra sem side effects e sem I/O.
- Garantir consumo simples por use cases.
- Criar testes unitários cobrindo cenários principais e bordas.
References
- Consultar references/domain-service-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.