You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过.NET HostApplicationBuilder获取已绑定的配置值?

如何通过MySettings类实例访问配置值

当然可以通过MySettings类的实例来访问配置值,根据场景不同有两种常用方式:

1. 从构建完成的Host服务容器中获取(推荐)

AddOptions<MySettings>().BindConfiguration("MySettings")已经将配置绑定逻辑注册到了依赖注入容器中,构建Host后可从服务容器解析IOptions<MySettings>获取实例:

public static async Task Main(string[] args)
{
    var builder = Host.CreateApplicationBuilder(args);

    builder.Services
        .AddOptions<MySettings>()
        .BindConfiguration("MySettings");

    var host = builder.Build();

    // 从服务容器获取配置实例
    var mySettings = host.Services.GetRequiredService<IOptions<MySettings>>().Value;
    Console.WriteLine(mySettings.MyValue); // 输出 "Foo"

    await host.RunAsync();
}

2. 在Builder阶段手动绑定实例(启动阶段快速获取)

如果无需依赖注入,只是想在构建Host前直接拿到配置实例,可手动调用配置的Bind方法:

public static async Task Main(string[] args)
{
    var builder = Host.CreateApplicationBuilder(args);

    // 手动创建实例并绑定配置
    var mySettings = new MySettings();
    builder.Configuration.GetSection("MySettings").Bind(mySettings);
    Console.WriteLine(mySettings.MyValue); // 输出 "Foo"

    // 依然可注册到服务容器供其他组件使用
    builder.Services
        .AddOptions<MySettings>()
        .BindConfiguration("MySettings");

    await builder.Build().RunAsync();
}

补充说明

IOptions<MySettings>是.NET Options模式的标准实现,支持配置延迟加载、变更通知、数据验证等特性,在应用的其他服务中,推荐通过构造函数注入IOptions<MySettings>来使用配置,而非手动绑定。

内容的提问来源于stack exchange,提问作者Bob Tway

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:23:17