njeção de Dependência de Construtor na Classe Ba

estou construindo uma classe base de repositório com o Entity Framework em que todo o repositório de entidades herdará. Eu quero injetar oDatabaseContext na classe base usando Injeção de Dependência usando Ninject. Eu acho que a injeção de construtor é o caminho certo, mas, fazendo isso com a injeção de construtor na classe derivada, devo passar o parâmetro para o construtor na classe base e não o quero. Portanto, uma injeção de incubadora é mais apropriada?

Aqui está o meu código:

public abstract class BaseRepository<TEntity> : IDisposable 
    where TEntity : class
{
    private readonly DatabaseContext _databaseContext;

    protected BaseRepository(DatabaseContext databaseContext)
    {
        this._databaseContext = databaseContext;
    }
}

Usando a injeção de construtor no exemplo acima, na minha classe derivada, devo passar o objeto databaseContext para a classe base, não gosto de fazer isso para toda a minha classe derivada:

public class UsuarioRepository : BaseRepository<IUsuario>,
    IUsuarioRepository
{
    public UsuarioRepository(DatabaseContext databaseContext)
        : base(databaseContext)
    {
    }
}

Injeção Setter em vez de Injeção de Construtor é uma boa maneira de resolver isso? Qual é a melhor maneira

Atualizar

Usando a Injeção Setter, minha classe derivada não terá construtores:

public class UsuarioRepository : BaseRepository<IUsuario>, IUsuarioRepository
{
}

Meu contexto é apenas um em todos os aplicativos. Não preciso da classe derivada para passar o objeto de contexto, mas gosto de injetá-lo na classe base para usar zombarias para testes no futur

Eu resolvo o problema:

Desculpe, estou confuso com a pergunta, mas estou resolvendo meu problema na construção de uma fábrica:

public abstract class BaseRepository<TEntity> : IBaseRepository<TEntity>
   where TEntity : class
{
    private readonly ContextFactory _contextFactory = new ContextFactory();

    protected DatabaseContext CurrentContext
    {
        get
        {
            return this._contextFactory.GetCurrentContext();
        }
    }
 }

E minha classe derivada será assim:

public class UsuarioRepository : BaseRepository<IUsuario>, IUsuarioRepository
{
}

E minha fábrica assim:

public class ContextFactory
{
    public DatabaseContext GetCurrentContext()
    {
        return new DatabaseContext();
    }
}

questionAnswers(4)

yourAnswerToTheQuestion