Skip to content

thenoobsbr/dependencyinjection-extensions

Repository files navigation

Coverage Quality Gate Status NuGet NuGet NuGet NuGet

TheNoobs.DependencyInjection.Extensions

Facilita a injeção de depedências através de anotações nas classes.

  • TransientInjection: Registra a classe como Transient, ou seja, uma nova instância é criada a cada injeção;
  • ScopedInjection: Registra a classe como Scoped, ou seja, uma nova instância é criada por requisição, ou escopo, utilizando o IServiceScopeFactory.Create();
  • SingletonInjection: Registra a classe como Singleton. ou seja, uma única instância é criada para todo o tempo de vida da aplicação.

Como usar

Anote sua classe com uma das anotações disponíveis.

[ScopedInjection(typeof(IOrderRepository), typeof(IOrderRepositoryReadOnly))]
class OrderRepository : IOrderRepository, IOrderRepositoryReadOnly
{
}

[SingletonInjection(typeof(HttpClient))]
class CustomHttpClient : HttpClient
{
}

[TransientInjection(typeof(IDomainEventHandler<Order>))]
class OrderEventHandler: IDomainEventHandler<Order>
{
}

You can retrieve a instance of a registered type if you want.

[ScopedInjection(new [] { typeof(IUnitOfWork) }, typeof(CustomDbContext)]
class CustomDbContext : DbContext, IUnitOfWork
{
}

Durante a configuração dos serviçoes, chame o método AddInjections fornecendo os assemblies que deseja que sejam analisados.

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddInjections(Assembly.GetExecutingAssembly());
    ...
}

E pronto, agora é só usar.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages