#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, который, вероятно, тот, который мне нужен. Спасибо!