コード例 #1
0
        public void Pilet_Services_Should_Resolve_Global_Dependencies()
        {
            // global registrations
            var globalServices = new ServiceCollection();

            globalServices.AddSingleton <GlobalDependency>();
            var piralServiceProvider = new PiralServiceProvider(globalServices);
            var globalDependency     = piralServiceProvider.GetRequiredService <GlobalDependency>();

            // moduleA registrations
            var moduleAServices = new ServiceCollection();

            moduleAServices.AddTransient <ModuleADependency>();
            var moduleAServiceProvider = piralServiceProvider.CreatePiletServiceProvider(moduleAServices);
            var moduleADependency      = moduleAServiceProvider.GetRequiredService <ModuleADependency>();

            globalDependency.Should().Be(moduleADependency.Dependency);

            // moduleB registrations
            var moduleBServices = new ServiceCollection();

            moduleBServices.AddTransient <ModuleBDependency>();
            var moduleBServiceProvider = piralServiceProvider.CreatePiletServiceProvider(moduleBServices);
            var moduleBDependency      = moduleBServiceProvider.GetRequiredService <ModuleBDependency>();

            globalDependency.Should().Be(moduleBDependency.Dependency);
        }
コード例 #2
0
        public void Pilet_Services_Registration_Should_Be_Commutative()
        {
            // global registrations
            var globalServices       = new ServiceCollection();
            var prialServiceProvider = new PiralServiceProvider(globalServices);

            // moduleC registrations
            var moduleCServices = new ServiceCollection();

            moduleCServices.AddTransient <ModuleCDependency>();
            var moduleCServiceProvider = prialServiceProvider.CreatePiletServiceProvider(moduleCServices);

            // moduleA registrations
            var moduleAGlobalServices = new ServiceCollection();

            moduleAGlobalServices.AddSingleton <ModuleAGlobalDependency>();
            prialServiceProvider.AddGlobalServices(moduleAGlobalServices);

            var moduleAServices        = new ServiceCollection();
            var moduleAServiceProvider = prialServiceProvider.CreatePiletServiceProvider(moduleAServices);

            // resolve dependencies
            var moduleAGlobalDependency = moduleAServiceProvider.GetRequiredService <ModuleAGlobalDependency>();
            var moduleCDependency       = moduleCServiceProvider.GetRequiredService <ModuleCDependency>();

            // assert
            moduleAGlobalDependency.Should().Be(moduleCDependency.Dependency);
        }
コード例 #3
0
        public void PiletA_Should_Resolve_Global_Dependency_Registerd_By_PiletB()
        {
            // Arrange
            var services = new ServiceCollection();

            services.AddLogging();
            services.AddSingleton <IModuleContainerService, ModuleContainerService>();

            var sp = new PiralServiceProvider(services);

            var moduleConatinerService = sp.GetRequiredService <IModuleContainerService>();

            // Act
            var spA = moduleConatinerService.Configure(typeof(PiletA.Module).Assembly);
            var spB = moduleConatinerService.Configure(typeof(PiletB.Module).Assembly);

            // Assert
            var dependencyA = spA.GetRequiredService <PiletA.DependencyA>();
            var dependencyB = spB.GetRequiredService <PiletB.DependencyB>();

            dependencyB.Should().Be(dependencyA.Dependency);
        }