26 lines
907 B
C#
26 lines
907 B
C#
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System;
|
|
|
|
namespace WebDesktopBackend.Options
|
|
{
|
|
public static class OptionsFromConfigurationExtensions
|
|
{
|
|
public static T AddOptionsFromConfiguration<T>(this IServiceCollection services, IConfiguration configuration)
|
|
where T : OptionsFromConfiguration
|
|
{
|
|
T optionsInstance = (T)Activator.CreateInstance(typeof(T));
|
|
if (optionsInstance == null) return null;
|
|
string position = optionsInstance.Position;
|
|
services.Configure((Action<T>)(options =>
|
|
{
|
|
IConfigurationSection section = configuration.GetSection(position);
|
|
if (section != null)
|
|
{
|
|
section.Bind(options);
|
|
}
|
|
}));
|
|
return optionsInstance;
|
|
}
|
|
}
|
|
} |