1
resposta

[Dúvida] Generics

Uma dúvida: Se estou fazendo o método genérico, porque não atribuir a linha de código de cada método (Add, Update, Remove) também de forma genérica no DAL? Pois se não na próxima classe que eu herdar o DAL terei que adicionar essas linhas também e não estarei otimizando as reutilizações.

1 resposta

Olá, Marconi! Tudo joia?

A ideia de criar métodos genéricos para operações como Add, Update e Remove é realmente uma ótima maneira de evitar a repetição de código e facilitar a manutenção e expansão do seu projeto.

Para implementar isso, você pode definir esses métodos na classe genérica DAL<T>, tornando-os abstratos. Assim, qualquer classe que herde de DAL<T> precisará implementar esses métodos, mas a lógica básica de manipulação de dados será centralizada e reutilizável. Aqui está um exemplo de como você pode fazer isso:

  1. Defina a classe DAL como genérica e abstrata:
internal abstract class DAL<T>
{
    public abstract IEnumerable<T> Listar();
    public abstract void Adicionar(T objeto);
    public abstract void Atualizar(T objeto);
    public abstract void Deletar(T objeto);
}
  1. Implemente os métodos nas classes que herdam de DAL<T>:

Para a classe ArtistaDAL, por exemplo:

internal class ArtistaDAL : DAL<Artista>
{
    private readonly DbContext context;

    public ArtistaDAL(DbContext context)
    {
        this.context = context;
    }

    public override IEnumerable<Artista> Listar()
    {
        return context.Artistas.ToList();
    }

    public override void Adicionar(Artista artista)
    {
        context.Artistas.Add(artista);
        context.SaveChanges();
    }

    public override void Atualizar(Artista artista)
    {
        context.Artistas.Update(artista);
        context.SaveChanges();
    }

    public override void Deletar(Artista artista)
    {
        context.Artistas.Remove(artista);
        context.SaveChanges();
    }
}

Com essa estrutura, você garante que qualquer nova classe que herde de DAL<T> terá que implementar esses métodos, mas a lógica de manipulação de dados pode ser facilmente adaptada para diferentes tipos sem duplicação de código.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.