none
Métodos genéricos RRS feed

  • Pergunta

  • Boa noite,

    Como resolvo a seguinte implementação? Quando implemento o código abaixo somente um tipo genérico ( T ) ele funciona blz, mas quando utilizo os dois parâmetros, ( T e TDomainModel ) como no código abaixo, o objeto TipoService não traz o método GetById. Alguém teria alguma solução?

    Desde já muito grato.

        public interface IService<T, TDomainModel> where T : class
        {
            TDomainModel GetById(Func<T, bool> func);
        }
    
    
    
        public abstract class ServiceBase<T, TDomainModel> where T : class 
        {
            private readonly IRepository<T> repository;
    
            public ServiceBase(IRepository<T> repository)
            {
                this.repository = repository;
            }
            public TDomainModel GetById(Func<T, bool> where)
            {
                return Mapper.Map<T, TDomainModel>(repository.Get(where));
            }
        }
    
    
    
        public class TipoService : ServiceBase<Tipo, TipoFormModel>, ITipoService
        {
            private readonly ITipoRepository tipoRepository;
    
            public TipoService(ITipoRepository tipoRepository) : base(tipoRepository)
            {
                this.tipoRepository = tipoRepository;
            }
        }
    
        public interface ITipoService : IService<Tipo, TipoFormModel>
        {
    
        }
    
    
    
        public class TipoController : Controller
        {
    
            private readonly ITipoService tipoService;
    
            public TipoController(ITipoService tipoService)
            {
                this.tipoService = tipoService;
            }
    
            public ActionResult Edit(int id)
            {
                return View(tipoService.GetById(id);
            }
        }

    sexta-feira, 21 de fevereiro de 2014 21:25

Todas as Respostas

  • é porque ta errado o ITipoService é interface que não foi implementada !!!

    Ta tendo um redundância também,

    Sinceridade, não sei a lógica empregada até me confundi !!! por exemplo não aparece também porque dentro da Abstract já tem um metodo 

    public TDomainModel GetById(Func<T, bool> where)
    {
                return Mapper.Map<T, TDomainModel>(repository.Get(where));
    }

    Passe a lógica e quando passar passe todas as classe faltou a irepository !!!

    Ta havendo conflito também por já existir!


    Fulvio Cezar Canducci Dias


    sábado, 22 de fevereiro de 2014 15:41