Ejemplo n.º 1
0
        public T Repositorio <T>() where T : class, IRepository
        {
            Type tipoT = typeof(T);

            // Váriavel de controle do tipo do repositório
            Type tipoRepositorio = null;

            if (!(_config is null) && _config.PossuiImplementacao(tipoT))
            {
                tipoRepositorio = _config.ObterTipoImplementacao(tipoT);
            }

            if (tipoRepositorio is null)
            {
                throw new ArgumentNullException($"{typeof(T)} não implementado");
            }

            // Instanciando um repositório pela UoW usando sempre o mesmo contexto do banco como paramêtro construtor
            // UoW é injetada como Singleton no arquivo Injector.cs
            return((T)Activator.CreateInstance(tipoRepositorio, new object[] { _context }));
        }