static void Main(string[] args) { var root = new Cat() .Register <IFoo, Foo>(Lifetime.Transient) .Register <IBar>(_ => new Bar(), Lifetime.Self) .Register <IBaz, Baz>(Lifetime.Root) .Register(Assembly.GetEntryAssembly()); var cat1 = root.CreateChild(); var cat2 = root.CreateChild(); void GetServices <TService>(Cat cat) { cat.GetService <TService>(); cat.GetService <TService>(); } GetServices <IFoo>(cat1); GetServices <IBar>(cat1); GetServices <IBaz>(cat1); GetServices <IGux>(cat1); Console.WriteLine(); GetServices <IFoo>(cat2); GetServices <IBar>(cat2); GetServices <IBaz>(cat2); GetServices <IGux>(cat2); }
private static void ControlLifetime() { var root = new Cat() .Register <IFoo, Foo>(Lifetime.Transient) .Register <IBar>(_ => new Bar(), Lifetime.Self) .Register <IBaz, Baz>(Lifetime.Singlelton); var cat1 = root.CreateChild(); var cat2 = root.CreateChild(); void GetServices <TService>(Cat cat) { cat.GetService <TService>(); cat.GetService <TService>(); } GetServices <IFoo>(cat1); GetServices <IBar>(cat1); GetServices <IBaz>(cat1); Console.WriteLine(); GetServices <IFoo>(cat2); GetServices <IBar>(cat2); GetServices <IBaz>(cat2); }
private static void DisposeServices() { using (var root = new Cat() .Register <IFoo, Foo>(Lifetime.Transient) .Register <IBar, Bar>(Lifetime.Self) .Register <IBaz, Baz>(Lifetime.Singlelton)) { using (var cat = root.CreateChild()) { cat.GetService <IFoo>(); cat.GetService <IBar>(); cat.GetService <IBaz>(); Console.WriteLine("Child cat is disposed."); } Console.WriteLine("Root cat is disposed."); } }
static void Main(string[] args) { using (var root = new Cat() .Register <IFoo, Foo>(Lifetime.Transient) .Register <IBar>(_ => new Bar(), Lifetime.Self) .Register <IBaz, Baz>(Lifetime.Root) .Register(Assembly.GetEntryAssembly())) { using (var cat = root.CreateChild()) { cat.GetService <IFoo>(); cat.GetService <IBar>(); cat.GetService <IBaz>(); cat.GetService <IGux>(); Console.WriteLine("Child cat is disposed."); } Console.WriteLine("Root cat is disposed."); } }