1
resposta

DTO, usando heranças e anotações

Em relação as boas práticas, não seria possível criar uma classe FilmeBaseDto e utilizar herança para não repetir o código das DTO's?

public class FilmeBaseDto
{
    [Required(ErrorMessage = "O campo 'filme' é obrigatório")]
    public string Titulo { get; set; }
    [Required(ErrorMessage = "O campo 'diretor' é obrigatório")]
    public string Diretor { get; set; }
    public string Genero { get; set; }
    [Range(1, 600, ErrorMessage = $"A duração deve estar entre 1 e 600 minutos")]
    public int Duracao { get; set; }
}

public class CreateFilmeDto : FilmeBaseDto
{
}

public class ReadFilmeDto : FilmeBaseDto
{
    [Key]
    [Required]
    public int Id { get; set; }
    public string DataConsulta { get; set; }
}

Ainda, em relação as anotações, as mesmas são necessária na classe Filme.cs da pasta models, uma vez que a validação dos campos está sendo feita na DTO?

1 resposta

Acredito que se usar a herança, irá trazer todos os atributos da classe herdada. A intenção do DTO é ter uma classe clonada, porém somente com atributos que deseja que seja mostrado e manipulado externamente. Ter que repetir a classe é uma das desvantagens do DTO.