C#面试题更新 2026-08-05

.NET Core 应用里要使用依赖注入,具体有哪些实现步骤和推荐方式?

技术原理方案权衡C#.NET Core

考察说明

考查对 .NET Core 内置依赖注入容器及其使用方式的理解

回答思路

  1. 【回答框架 1】.NET Core 内置了依赖注入容器,核心是 IServiceCollection 和 IServiceProvider。在 Startup.ConfigureServices 中通过 services.AddScoped、AddTransient、AddSingleton 注册服务,然后构造函数注入使用。
  2. 【回答框架 2】注册生命周期:Transient 每次请求都创建新实例,Scoped 在每个作用域内共享,Singleton 全局单例。需要根据服务状态和线程安全选择合适生命周期。
  3. 【回答框架 3】推荐在构造函数中显式声明依赖,避免使用服务定位器。内置容器适合大多数场景,若需要更高级功能如拦截、动态代理,可集成 Autofac 等第三方容器。
  4. 【关键点 1】内置容器通过 UseStartup 自动扫描 ConfigureServices
  5. 【关键点 2】生命周期选择遵循:无状态服务用 Singleton,有状态但作用域内共享用 Scoped,轻量无复用用 Transient
  6. 【关键点 3】构造函数注入是最常用方式,避免静态依赖
  7. 【易错点 1】Singleton 服务依赖 Scoped 服务会捕获作用域导致内存泄漏,需通过工厂方法解决
  8. 【易错点 2】避免在构造函数中做耗时操作,影响实例创建性能