using Microsoft.Extensions.Options;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
public string MyValue { get; set; }
public class MyService(IOptions<MySettings> settings)
public MySettings Settings => settings.Value;
public static void Main()
ServiceCollection services = new();
services.AddOptions<MySettings>(diKey)
.Configure(opts => opts.MyValue = "TEST");
services.TryAddKeyedSingleton<MyService>(diKey);
ServiceProvider serviceProvider = services.BuildServiceProvider();
MySettings settings = serviceProvider
.GetRequiredService<IOptionsFactory<MySettings>>()
.Create(diKey ?? Options.DefaultName);
Console.WriteLine("Settings MyValue: " + settings.MyValue);
MyService service = serviceProvider
.GetRequiredService<MyService>();
Console.WriteLine("Service MyValue: " + service.Settings.MyValue);