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

.NET如何在启动期间访问TOptions(选项模式)

在.NET启动期间获取已绑定的Options实例的简洁方法

你可以直接通过配置绑定获取实例,再同步完成DI容器注册,具体有两种简洁方式:

方法一:使用Bind方法

先手动创建Options实例,将配置节绑定到该实例,同时完成DI注册:

var builder = WebApplication.CreateBuilder(args);

// 手动绑定配置到实例
var myOptions = new MyOptionsClass();
builder.Configuration.GetSection(MyOptionsClass.ConfigName).Bind(myOptions);

// 注册到DI容器(保证控制器能通过依赖注入获取)
builder.Services.Configure<MyOptionsClass>(builder.Configuration.GetSection(MyOptionsClass.ConfigName));

// 直接用myOptions实例配置认证服务
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options => { options.Authority = myOptions.Authority; });

方法二:使用Get<T>方法(更简洁)

利用ConfigurationBinder.Get<T>直接从配置节拿到绑定好的实例:

var builder = WebApplication.CreateBuilder(args);

// 直接获取绑定后的Options实例
var myOptions = builder.Configuration.GetSection(MyOptionsClass.ConfigName).Get<MyOptionsClass>()!;

// 注册到DI容器
builder.Services.Configure<MyOptionsClass>(builder.Configuration.GetSection(MyOptionsClass.ConfigName));

// 使用实例配置服务
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options => { options.Authority = myOptions.Authority; });

补充说明

Services.Configure<T>返回IServiceCollection是为了支持服务注册的链式调用,本身不负责返回绑定后的Options实例。上面两种方法既满足了DI注册需求,又能在启动阶段拿到可用的实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:15:31