DInjection is a lightweight DI library inspired by .NET Service Collection
and Service Provider
.
- Global services scope
- Singleton & Transient lifetimes
- Register base types
- Get all types of base
- High Performance
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();
}
Here is a perfomance chart of other libraries performing get for transient and singelton.