课程进度 55% · 第6/10章第6/10章 · 标签 1/2
— 1 —
依赖注入(DI)
ASP.NET Core内置依赖注入容器,支持三种生命周期:Singleton、Scoped、Transient。
csharp
1
// 注册服务
2
builder.Services.AddScoped<IUserService, UserService>();
3
builder.Services.AddSingleton<ICacheService, CacheService>();
4
builder.Services.AddTransient<IEmailService, EmailService>();
5
6
// 使用依赖注入
7
public class UserController : ControllerBase {
8
private readonly IUserService _userService;
9
10
public UserController(IUserService userService) {
11
_userService = userService;
12
}
13
}
📖Scoped:每个HTTP请求一个实例。Singleton:全局唯一。Transient:每次注入都创建新实例
— 2 —
配置与日志
.NET提供了强大的配置系统和日志框架,支持多种配置源和日志输出目标。
csharp
1
// 读取配置
2
var connectionString = builder.Configuration
3
.GetConnectionString("DefaultConnection");
4
5
var appSettings = builder.Configuration
6
.GetSection("AppSettings")
7
.Get<AppSettings>();
8
9
// 日志记录
10
public class UserService {
11
private readonly ILogger<UserService> _logger;
12
13
public UserService(ILogger<UserService> logger) {
14
_logger = logger;
15
}
16
17
public void CreateUser(User user) {
18
_logger.LogInformation("Creating user: {Name}", user.Name);
19
// 业务逻辑
20
}
21
}
DIIoCSingletonScoped配置日志