示例#1
0
        static void Main(string[] args)
        {
            //var container = new Container();
            //container.Register<IFoo, Foo>();
            //container.Register<IBar, Bar>(LifeCycle.Transient);
            //var BarService = container.GetService<IBar>();
            //var BarService2 = container.GetService<IBar>();
            //var FooService = container.GetService<IFoo>();
            //var FooService2 = container.GetService<IFoo>();

            #region test containerBuilder
            var service = new ServiceCollection();
            service.AddTransient <IFoo, Foo>()
            .AddScoped <IBar>(_ => new Bar())
            .AddSingleton <IBaz>(new Baz());

            var factory = new ContainerProviderFactory();
            var temp    = Assembly.GetEntryAssembly();
            var builder = factory.CreateBuilder(service).Register(Assembly.GetEntryAssembly());

            var container = factory.CreateServiceProvider(builder);

            GetServices(container);
            GetServices(container);
            Console.WriteLine($"\nroot container is disposed");
            (container as IDisposable)?.Dispose();
            #endregion
        }