DInjection 🗄️
DInjection is a lightweight DI library inspired by .NET Service Collection
and Service Provider
.
Features
X
Global services scopeX
Singleton & Transient lifetimesX
Register base typesX
Get all types of baseX
High Performance
Examples
Basic usage:
//
final services = ServicesCollection() //
.add((_) => ServiceA())
.build();
//
final service = services.getOf<ServiceA>();
//
service.foo();
Global services:
//
final services = ServicesCollection() //
.add((_) => ServiceA())
.build()
.setGlobal();
//
functionWithNoParameters();
//
void functionWithNoParameters() {
final service = gServices.getOf<ServiceA>();
service.foo();
}
Base type :
//
final services = ServicesCollection() //
.base<BaseServiceA>((base) => base.add((services) => ServiceA()))
.build();
//
final service = services.getOf<BaseServiceA>();
//
service.foo();
Get all types of base :
//
final services = ServicesCollection() //
.base<BaseServiceA>((base) => base //
.add((services) => ServiceA())
.add((services) => ServiceB()))
.build();
//
final base = services.getManyOf<BaseServiceA>();
//
for (var b in base) {
b.foo();
}
Perfomance
Here is a perfomance chart of other libraries performing get for transient and singelton.
Libraries
- dinjection
- Support for doing something awesome.