mirror of
https://github.com/AlexMacocian/Slim.git
synced 2026-07-24 03:56:34 +00:00
a0a4eb78ecf31c7ffeda63ebc237dcbacf817014
Slim
Service lifetime manager and dependency injection framework
Uses lazy approach and only implements objects when called.
Supports multiple Register calls without needing to rebuild.
To use, simply create and register types:
var serviceManager = new ServiceManager();
serviceManager.RegisterSingleton<IService1, Service1>();
serviceManager.RegisterSingleton<IService2, Service2>(sp => new Service2(sp.GetService<IService1>());
serviceManager.GetService<IService2>();
To manage the lifetime of the objects, use serviceManager.RegisterSingleton or serviceManager.RegisterTransient.
Can register a services for all interaces it implements:
serviceManager.RegisterSingleton<Service1>();
serviceManager.GetService<I1Service1>();
serviceManager.GetService<I2Service1>();
Supports both generics or arguments as types:
serviceManager.RegisterTransient<IService1, Service1>();
serviceManager.RegisterTransient(typeof(IService2), typeof(Service2));
Can register current service manager as a valid dependency:
serviceManager.RegisterServiceManager();
Can handle multiple types of exceptions:
serviceManager.HandleException<DependencyInjectionException>((sp, ex) => DoSomething1(ex));
serviceManager.HandleException<InvalidOperationException>((sp, ex) => DoSomething2(ex));
serviceManager.HandleException<Exception>((sp, ex) => DoSomething3(ex));
In case of reinitialization, call:
serviceManager.Clear();
serviceManager.Clear calls IDisposable.Dispose on singletons that implement IDisposable.
To build all singletons currently registered, call:
serviceManager.BuildSingletons();
Languages
C#
100%