Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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.");
     }
 }
Пример #4
0
 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.");
     }
 }