コード例 #1
0
ファイル: Startup.cs プロジェクト: humblelistener/Hosting
 public IServiceProvider ConfigureProviderArgsServices()
 {
     var services = new ServiceCollection().AddOptions();
     services.Configure<FakeOptions>(o =>
     {
         o.Configured = true;
         o.Environment = "ProviderArgs";
     });
     return services.BuildServiceProvider();
 }
コード例 #2
0
        public IServiceProvider CreateContainer(ShellSettings settings, ShellBlueprint blueprint) {
            ServiceCollection serviceCollection = new ServiceCollection();

            serviceCollection.AddScoped<IOrchardShell, DefaultOrchardShell>();
            serviceCollection.AddScoped<IRouteBuilder, DefaultShellRouteBuilder>();
            serviceCollection.AddInstance(settings);
            serviceCollection.AddInstance(blueprint.Descriptor);
            serviceCollection.AddInstance(blueprint);

            serviceCollection.AddMvc();

            serviceCollection.Configure<RazorViewEngineOptions>(options => {
                var expander = new ModuleViewLocationExpander();
                options.ViewLocationExpanders.Add(expander);
            });

            var p = _serviceProvider.GetService<IOrchardLibraryManager>();
            serviceCollection.AddInstance<IAssemblyProvider>(new DefaultAssemblyProviderTest(p, _serviceProvider, _serviceProvider.GetService<IAssemblyLoaderContainer>()));

            foreach (var dependency in blueprint.Dependencies) {
                foreach (var interfaceType in dependency.Type.GetInterfaces()
                    .Where(itf => typeof(IDependency).IsAssignableFrom(itf))) {
                    Logger.Debug("Type: {0}, Interface Type: {1}", dependency.Type, interfaceType);

                    if (typeof(ISingletonDependency).IsAssignableFrom(interfaceType)) {
                        serviceCollection.AddSingleton(interfaceType, dependency.Type);
                    }
                    else if (typeof(IUnitOfWorkDependency).IsAssignableFrom(interfaceType)) {
                        serviceCollection.AddScoped(interfaceType, dependency.Type);
                    }
                    else if (typeof (ITransientDependency).IsAssignableFrom(interfaceType)) {
                        serviceCollection.AddTransient(interfaceType, dependency.Type);
                    }
                    else {
                        serviceCollection.AddScoped(interfaceType, dependency.Type);
                    }
                }
            }

            //foreach (var item in blueprint.Controllers) {
            //    var serviceKeyName = (item.AreaName + "/" + item.ControllerName).ToLowerInvariant();
            //    var serviceKeyType = item.Type;
            //    serviceCollection.AddScoped(serviceKeyType);

            //}

            return BuildFallbackServiceProvider(
                            serviceCollection,
                            _serviceProvider);
        }
コード例 #3
0
        private static IServiceProvider CreateServiceProvider()
        {
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-gb");
            var builder = new ConfigurationBuilder().AddUserSecrets();
            var configuration = builder.Build();

            var services = new ServiceCollection();

            services.AddWarcraft();
            services.AddBattleNetCache();
            services.Configure<BattleNetClientOptions>(options =>
            {
                options.ApiKey = configuration["Authentication:BattleNet:Key"];
                options.ParseApiResponseInformation = true;
                options.ThrowErrorOnMissingMembers = true;
            });

            return services.BuildServiceProvider();
        }
コード例 #4
0
        public void AntiforgeryOptionsSetup_UserOptionsSetup_CanSetCookieName()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();
            serviceCollection.Configure<AntiforgeryOptions>(o =>
            {
                Assert.Null(o.CookieName);
                o.CookieName = "antiforgery";
            });
            serviceCollection.AddAntiforgery();
            serviceCollection.ConfigureDataProtection(o => o.SetApplicationName("HelloWorldApp"));

            var services = serviceCollection.BuildServiceProvider();
            var options = services.GetRequiredService<IOptions<AntiforgeryOptions>>();

            // Act
            var cookieName = options.Value.CookieName;

            // Assert
            Assert.Equal("antiforgery", cookieName);
        }
コード例 #5
0
 private static IInlineConstraintResolver GetConstraintResolver()
 {
     var services = new ServiceCollection().AddOptions();
     services.Configure<RouteOptions>(options =>
                         options
                         .ConstraintMap
                         .Add("test", typeof(TestRouteConstraint)));
     var serviceProvider = services.BuildServiceProvider();
     var accessor = serviceProvider.GetRequiredService<IOptions<RouteOptions>>();
     return new DefaultInlineConstraintResolver(accessor);
 }
コード例 #6
0
ファイル: OptionsTest.cs プロジェクト: liujiekm/Options
        public void SetupCallsInOrder()
        {
            var services = new ServiceCollection().AddOptions();
            var dic = new Dictionary<string, string>
            {
                {"Message", "!"},
            };
            var builder = new ConfigurationBuilder().AddInMemoryCollection(dic);
            var config = builder.Build();
            services.Configure<FakeOptions>(o => o.Message += "Igetstomped");
            services.Configure<FakeOptions>(config);
            services.Configure<FakeOptions>(o => o.Message += "a");
            services.ConfigureOptions(typeof(FakeOptionsSetupA));
            services.ConfigureOptions(new FakeOptionsSetupB());
            services.ConfigureOptions<FakeOptionsSetupC>();
            services.Configure<FakeOptions>(o => o.Message += "z");

            var service = services.BuildServiceProvider().GetService<IOptions<FakeOptions>>();
            Assert.NotNull(service);
            var options = service.Value;
            Assert.NotNull(options);
            Assert.Equal("!aABCz", options.Message);
        }
コード例 #7
0
ファイル: OptionsTest.cs プロジェクト: liujiekm/Options
        public void Configure_GetsNullableOptionsFromConfiguration(
            IDictionary<string, string> configValues,
            IDictionary<string, object> expectedValues)
        {
            // Arrange
            var services = new ServiceCollection().AddOptions();
            var builder = new ConfigurationBuilder().AddInMemoryCollection(configValues);
            var config = builder.Build();
            services.Configure<NullableOptions>(config);

            // Act
            var options = services.BuildServiceProvider().GetService<IOptions<NullableOptions>>().Value;

            // Assert
            var optionsProps = options.GetType().GetProperties().ToDictionary(p => p.Name);
            var assertions = expectedValues
                .Select(_ => new Action<KeyValuePair<string, object>>(kvp =>
                    Assert.Equal(kvp.Value, optionsProps[kvp.Key].GetValue(options))));
            Assert.Collection(expectedValues, assertions.ToArray());
        }
コード例 #8
0
        public void SetupTargetOptionsNameIsNotCaseSensitive()
        {
            var services = new ServiceCollection().AddOptions();
            services.Configure<FakeOptions>(o => o.Message += "B", -100, "abc");

            var service = services.BuildServiceProvider().GetService<IOptions<FakeOptions>>();

            var options2 = service.GetNamedOptions("ABC");
            Assert.NotNull(options2);
            Assert.Equal("B", options2.Message);

            var options3 = service.GetNamedOptions("aBc");
            Assert.NotNull(options3);
            Assert.Equal("B", options3.Message);
        }
コード例 #9
0
        public void NullNamesAreAlwaysApplied()
        {
            const string TargetOptionsName = "Name";
            var services = new ServiceCollection().AddOptions();
            services.Configure<FakeOptions>(o => o.Message += "a");
            services.Configure<FakeOptions>(o => o.Message += "N", TargetOptionsName);

            var service = services.BuildServiceProvider().GetService<IOptions<FakeOptions>>();
            Assert.NotNull(service);
            var options = service.Options;
            Assert.NotNull(options);
            Assert.Equal("a", options.Message);
            var namedOption = service.GetNamedOptions(TargetOptionsName);
            Assert.NotNull(namedOption);
            Assert.Equal("aN", namedOption.Message);
        }
コード例 #10
0
        public void NamedSetupDoNotCollideWithEachOther()
        {
            var services = new ServiceCollection().AddOptions();
            var dic = new Dictionary<string, string>
            {
                {"Message", "!"},
            };
            var builder = new ConfigurationBuilder(new MemoryConfigurationSource(dic));
            var config = builder.Build();

            services.ConfigureOptions(new FakeOptionsSetupB { Name = "2" });
            services.Configure<FakeOptions>(o => o.Message += "Z", 10000, "2");

            services.ConfigureOptions(new FakeOptionsSetupB { Name = "3" });
            services.Configure<FakeOptions>(config, "3");
            services.Configure<FakeOptions>(o => o.Message += "z", 10000, "3");

            var service = services.BuildServiceProvider().GetService<IOptions<FakeOptions>>();
            Assert.NotNull(service);
            var options = service.Options;
            Assert.NotNull(options);
            Assert.Equal("", options.Message);

            var options2 = service.GetNamedOptions("2");
            Assert.NotNull(options2);
            Assert.Equal("BZ", options2.Message);

            var options3 = service.GetNamedOptions("3");
            Assert.NotNull(options3);
            Assert.Equal("!Bz", options3.Message);
        }