namespace ProjectManager.Backend.Options; public abstract class OptionsFromConfiguration { public abstract string Position { get; set; } } public static class OptionsFromConfigurationExtensions { public static T AddOptionsFromConfiguration(this IServiceCollection services, IConfiguration configuration) where T : OptionsFromConfiguration { T optionsInstance = (T)Activator.CreateInstance(typeof(T)); if (optionsInstance == null) return null; var position = optionsInstance.Position; services.Configure((Action)(options => { configuration.Bind(position, options); })); return optionsInstance; } }