我有这样一个代码块:
public async Task HandleAsync(Func<Task> next, CancellationToken cancellationToken) {
using (var scope = logger.BeginScope("myName")) {
await next();
}
}
Jetbrains Rider 建议将其更改为:
public async Task HandleAsync(Func<Task> next, CancellationToken cancellationToken) {
using (_ = logger.BeginScope("myName")) {
await next();
}
}
然后是这个:
public async Task HandleAsync(Func<Task> next, CancellationToken cancellationToken) {
logger.BeginScope("myName");
await next();
}
我想知道
using (_ = logger.BeginScope("myName"))
或最后一个建议是否与我的第一个代码块相同。如果我应用这些建议,会产生任何不需要的副作用吗?
谢谢, 格克琴
不知道记录器实现,假设它依赖于 using/dispose 来输出开始/结束日志消息,因为这是一种常见模式,那么......
不,最后一个建议不会与前两个建议相同。
前 2 个显式处理 logger 返回的对象。因此您将在您期望的位置收到“结束”日志消息。
最后一个没有。这意味着处置将会发生,但您不知道何时发生。所以'end'日志消息将会输出在一个不可预知的地方。