mirror of
https://github.com/AlexMacocian/Slim.git
synced 2026-07-21 01:59:51 +00:00
d572b22e21b874d2ce6ac973e4792ede6c555077
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.
Supports both generics or arguments as types:
serviceManager.RegisterTransient<IService1, Service1>();
serviceManager.RegisterTransient(typeof(IService2), typeof(Service2));
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%