Example #1
0
        public void LifetimesShouldBeRespected()
        {
            var di = new ServiceManager();

            di.RegisterSingleton <IIndependentService, IndependentService>();
            di.RegisterScoped <IDependentService, DependentService>();
            di.BuildSingletons();
            var scopedDi = di.CreateScope();

            var independentService1 = di.GetService <IIndependentService>();
            var dependentService1   = di.GetService <IDependentService>();
            var independentService2 = scopedDi.GetService <IIndependentService>();
            var dependentService2   = scopedDi.GetService <IDependentService>();

            independentService1.Should().Be(independentService2);
            dependentService1.Should().NotBe(dependentService2);
            independentService1.Should().NotBeNull();
            independentService2.Should().NotBeNull();
            dependentService1.Should().NotBeNull();
            dependentService2.Should().NotBeNull();
        }
Example #2
0
        public void BuildAllSingletons()
        {
            var shouldCallConstructor    = false;
            var shouldNotCallConstructor = false;
            var di = new ServiceManager();

            di.RegisterSingleton <IIndependentService, IndependentService>(sp =>
            {
                shouldCallConstructor = true;
                return(new IndependentService());
            });
            di.RegisterTransient <IDependentService, DependentService>(sp =>
            {
                shouldNotCallConstructor = true;
                return(new DependentService(sp.GetService <IIndependentService>()));
            });

            di.BuildSingletons();

            shouldCallConstructor.Should().BeTrue();
            shouldNotCallConstructor.Should().BeFalse();
        }