Value Object (C#)
Overview
Aplicar o padrão de Value Object em C#, garantindo imutabilidade, validação de invariantes, normalização de dados e a interface Create com Result<T>. Usar record para igualdade baseada em valor.
Guidelines
- Ler
references/vo-pattern-cs.md(se disponível) antes de criar ou modificar VOs. - Usar
recordpara aproveitar a igualdade estrutural nativa do C#. - Construtor
privateouprotectedpara forçar o uso do métodoCreate. - Validar invariantes no método estático
CreateretornandoResult<T>. - Preferir validações explícitas com códigos de erro estáticos (ex.:
Error.InvalidEmail).
Workflow
- Identificar o tipo base do VO (string, decimal, int, etc.) e invariantes.
- Verificar VOs existentes para evitar duplicação ou para alinhar regras.
- Implementar o VO seguindo o esqueleto padrão (record + static Create).
- Adicionar testes unitários cobrindo casos válidos e inválidos.
- Revisar a API pública para manter consistência (
Create,Result, erros).
References
- Consultar
../skills-standards.mdpara convenção global de nomenclatura (seção C#). - Seguir padrões de C# idiomáticos.
Global Standards
- Consultar
../skills-standards.mdpara padrões globais de nomenclatura e convenções gerais entre skills.