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

ASP.NET Core 3.1如何在ConfigureServices中复用Configure注册的AppSettings注册服务

可行实现方案

方案1:调整自定义类构造函数(推荐,符合依赖注入最佳实践)

这种方案不需要手动读取配置,框架会自动完成依赖注入,代码最简洁:

  1. 修改MyCustomClass的构造函数,直接注入IOptions<AppSettings>即可获取配置:
public class MyCustomClass : IMyCustomClasses
{
    public MyCustomClass(IOptions<AppSettings> appOptions)
    {
        // 直接从配置实例中取你需要的参数
        var targetValue = appOptions.Value.Somevalue;
        // 后续初始化逻辑
    }
}
  1. 调整ConfigureServices中的服务注册代码,删除手动读配置的行即可:
services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
// 直接注册服务,框架会自动注入构造函数需要的IOptions<AppSettings>
services.AddSingleton<IMyCustomClasses, MyCustomClass>();

方案2:使用服务注册的工厂重载(适合无法修改自定义类源码的场景)

如果你不能修改MyCustomClass的构造函数,可以用服务注册的工厂重载,从已经构建的服务容器中解析配置:

services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
// 用带IServiceProvider参数的工厂方法注册服务
services.AddSingleton<IMyCustomClasses>(serviceProvider =>
{
    var appConfig = serviceProvider.GetRequiredService<IOptions<AppSettings>>().Value;
    return new MyCustomClass(appConfig.Somevalue);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:04