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

C# [FromServices]用法与依赖注入构造参数来源问题咨询

核心原因:ASP.NET Core 自带依赖注入容器的自动依赖解析逻辑

你提到的三个构造函数参数,都是ASP.NET Core框架默认注册或者项目中已经完成注册的服务,DI容器在创建LocalFileStorageHandler实例时,会自动从全局服务集合中匹配并注入对应的参数实例,不需要手动显式传递。

三个参数的具体来源说明:

  • IConfiguration
    是ASP.NET Core启动时默认注册的单例服务,自动绑定了appsettings.json、环境变量、启动参数等所有配置源,无需手动注册即可直接在任意构造函数中注入使用。
  • ILogger<LocalFileStorageHandler>
    官方默认WebAPI模板会自动注册日志组件,AddLogging()方法会提前注册泛型ILogger<>的工厂实现,当构造函数传入指定类型的ILogger<T>时,容器会自动生成对应类别的日志实例,不需要单独为每个T注册ILogger<T>。
  • DbContext
    项目中必然已经通过AddDbContext方法完成了注册,你可以搜索Startup.cs/Program.cs中类似services.AddDbContext<自定义DbContext子类>(options=>{...})的代码。只要项目只注册了一个EF Core上下文,DI容器就可以直接匹配到构造函数中的基类DbContext参数。

补充验证方式

你可以在ConfigureServices方法的末尾添加以下代码,遍历输出所有已注册的服务,即可找到三个参数对应的注册记录:

foreach (var service in services)
{
    Console.WriteLine($"服务类型:{service.ServiceType.FullName},生命周期:{service.Lifetime},实现类:{service.ImplementationType?.FullName}");
}

内容的提问来源于stack exchange,提问作者Mr.Gomer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:04