Olá.
Estou desenvolvendo uma camada de serviço e idealizei da seguinte forma:
É passado um parâmetro para a camada de serviço que por sua vez chama o repositório. O repositório retorna os dados segundo o modelo de dados, e é nesse ponto que eu quero usar o automapper para mapear com o modelo que será exposto, ou seja, o modelo do
serviço. Segue abaixo a camada de serviço que se comunica com o repositório, é dela que será implementada os serviços.
public abstract class ServiceBase<T> where T : class
{
private readonly IRepository<T> repository;
public ServiceBase(IRepository<T> repository)
{
this.repository = repository;
}
public virtual T GetById(long id)
{
return repository.GetById(id);
}
public virtual T GetById(string id)
{
return repository.GetById(id);
}
public virtual IEnumerable<T> GetAll()
{
return repository.GetAll();
}
public virtual IEnumerable<T> GetMany(Expression<Func<T, bool>> where)
{
return repository.GetMany(where);
}
public T Get(Expression<Func<T, bool>> where)
{
return repository.GetMany(where).FirstOrDefault<T>();
}
}
Segue a implementação do serviço base:
public class TipoService : ServiceBase<Tipo>, ITipoService
{
public TipoService(ITipoRepository tipoRepository) : base(tipoRepository)
{
}
}
public interface ITipoService : IService<Tipo>
{
}