C# 中的依赖注入:提高代码灵活性与可测试性-使用依赖注入容器

时间:2024-12-05 15:58:28

依赖注入容器(DI Container)是一种工具,用于管理和解析依赖关系。常用的依赖注入容器有 Autofac、Ninject、Unity 等。在 ASP.NET Core 中,内置了依赖注入支持。

注册依赖

在依赖注入容器中注册依赖关系。

using Microsoft.Extensions.DependencyInjection;

public class Program
{
    public static void Main()
    {
        var services = new ServiceCollection();
        
        // 注册依赖
        services.AddTransient<ILogger, ConsoleLogger>();
        services.AddTransient<UserService>();

        var serviceProvider = services.BuildServiceProvider();

        // 解析依赖
        var userService = serviceProvider.GetService<UserService>();
        userService.RegisterUser("Alice");
    }
}

生命周期管理

依赖注入容器可以根据需要管理依赖对象的生命周期。

  • Transient:每次请求都创建新的实例。
  • Scoped:在同一作用域内共享同一个实例。
  • Singleton:整个应用程序生命周期内共享同一个实例。
services.AddTransient<ILogger, ConsoleLogger>(); // Transient
services.AddScoped<UserService>(); // Scoped
services.AddSingleton<IApplicationLifetime>(); // Singleton