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:
- 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);
}
- 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 ✓.