【问题标题】:How do I access the Options Object in Services.Configure<MyOptions> in DotNet Core Dependency Injection?如何在 DotNet 核心依赖注入中访问 Services.Configure<MyOptions> 中的选项对象?
【发布时间】:2020-11-16 03:32:12
【问题描述】:

我对依赖注入比较陌生。我有以下代码:

 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);
        }

【问题讨论】:

    标签: c# .net .net-core dependency-injection


    【解决方案1】:

    试试这个:

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

    并获取 FtpServerOptions:

    var  options = Item2.Value
    

    【讨论】:

    • 酷它可以工作,但也有 IOptionsMonitor 这可能是我需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2021-09-14
    • 1970-01-01
    • 2018-12-14
    • 2019-06-07
    相关资源
    最近更新 更多