Esempio n. 1
0
        public IForgeBuilder AddShard <TMithrilShard, TMithrilShardSettings, TMithrilShardSettingsValidator>(Action <HostBuilderContext, IServiceCollection> configureDelegate, Action <IHostBuilder>?preBuildAction = null)
            where TMithrilShard : class, IMithrilShard
            where TMithrilShardSettings : class, IMithrilShardSettings, new()
            where TMithrilShardSettingsValidator : class, IValidateOptions <TMithrilShardSettings>
        {
            //register shard configuration settings
            _hostBuilder.ConfigureServices((context, services) =>
            {
                var optionsBuilder = services
                                     .AddOptions <TMithrilShardSettings>()
                                     .Bind(MithrilShardSettingsManager.GetSection <TMithrilShardSettings>(context.Configuration))
                                     .ValidateOnStart();

                optionsBuilder.Services.AddSingleton <IValidateOptions <TMithrilShardSettings> >(new DataAnnotationValidateOptions <TMithrilShardSettings>(optionsBuilder.Name));

                //register the shard configuration setting as IMithrilShardSettings in order to allow DefaultConfigurationWriter to write default its default values
                services.AddSingleton <IMithrilShardSettings, TMithrilShardSettings>();

                context.SetShardSettings <TMithrilShardSettings>(services);
            });

            AddShard <TMithrilShard>(configureDelegate, preBuildAction);

            return(this);
        }
Esempio n. 2
0
        public IForgeBuilder AddShard <TMithrilShard, TMithrilShardSettings>(Action <HostBuilderContext, IServiceCollection> configureDelegate)
            where TMithrilShard : class, IMithrilShard
            where TMithrilShardSettings : class, IMithrilShardSettings
        {
            this.AddShard <TMithrilShard>(configureDelegate);

            //register shard configuration settings
            this.hostBuilder.ConfigureServices((context, services) => {
                services.Configure <TMithrilShardSettings>(MithrilShardSettingsManager.GetSection <TMithrilShardSettings>(context.Configuration));

                //register the shard configuration setting as IMithrilShardSettings in order to allow DefaultConfigurationWriter to write default its default values
                services.AddSingleton <IMithrilShardSettings, TMithrilShardSettings>();
            });

            return(this);
        }