Пример #1
0
        public void InjectOptions()
        {
            foreach (var optionsType in RootKwikOptions.OptionsTypes)
            {
                if (RootKwikOptions.LoadExternalAssemblies)
                {
                    AssemblyUtilities.LoadAssemblyIfNotLoaded(optionsType.Assembly);
                }

                try
                {
                    MethodInfo method =
                        typeof(OptionsConfigurationServiceCollectionExtensions).GetMethod(
                            "Configure",
                            BindingFlags.Static | BindingFlags.Public,
                            null,
                            new[] { typeof(IServiceCollection), typeof(IConfigurationSection) },
                            null);
                    MethodInfo generic = method.MakeGenericMethod(Type.GetType(optionsType.Type));
                    generic.Invoke(null, new object[] { Services, Configuration.GetSection(optionsType.OptionsPath) });
                }
                catch (Exception)
                {
                }
            }
        }
Пример #2
0
        public void InjectOptions()
        {
            var rootKwikOptions = new RootKwikOptions();

            Configuration.GetSection(ConfigPath).Bind(rootKwikOptions);

            foreach (var optionsProvider in rootKwikOptions.OptionsProviders)
            {
                AssemblyUtilities.LoadAssemblyIfNotLoaded(optionsProvider.Assembly);
                Type optionsType      = Type.GetType(optionsProvider.Type);
                var  providerInstance =
                    (IOptionsProvider)ActivatorUtilities
                    .CreateInstance(ServiceCollection.BuildServiceProvider(), optionsType);

                providerInstance
                .ConfigureOption(
                    ServiceCollection,
                    Configuration.GetSection(optionsProvider.OptionsPath));
            }
        }