Как мне получить доступ к объекту Options в Services.Настройте при внедрении зависимостей ядра DotNet?

#c# #.net #.net-core #dependency-injection

#c# #.net #.net-core #внедрение зависимостей

Вопрос:

Я относительно новичок в внедрении зависимостей. У меня есть следующий код:

  static void Main(string[] args)
        {
            
            var hostBuilder = new HostBuilder()
               .UseConsoleLifetime()
               .ConfigureServices((hostContext, services) =>
               {
                   services.AddFtpServer(opt => opt.UseDotNetFileSystem()).AddHostedService<HostedFtpService>();
                   services.AddSingleton<IMembershipProvider, CustomMembershipProvider>();
                   services.Configure<FtpServerOptions>(opt => opt.Port = 33999);
                });
            var host = hostBuilder.Build();

            var Item1 = host.Services.GetService<IMembershipProvider>(); //This works, I can get the new CustomMembershipProvider Object
            var Item2 = host.Services.GetService<FtpServerOptions>(); //This does NOT work....


        }
  

Я могу получить доступ к объекту CustomMembershipProvider, но…

Как мне получить доступ к объекту FtpServerOptions?

Ниже приведен класс FtpServerOptions

 public class FtpServerOptions
        {
            public string? ServerAddress { get; set; }
            public int Port { get; set; } = 21;
            public int MaxActiveConnections { get; set; }
            public TimeSpan? ConnectionInactivityCheckInterval { get; set; } = TimeSpan.FromMinutes(1);
        }
  

Ответ №1:

Попробуйте это :

 var Item2 = host.Services.GetService<IOptions<FtpServerOptions>>(); 
  

И получить параметры FtpServerOptions:

 var  options = Item2.Value
  

Комментарии:

1. Круто, что это работает, но есть также IOptionsMonitor, который, вероятно, тот, который мне нужен. Спасибо!