【发布时间】:2021-02-12 15:08:25
【问题描述】:
我正在尝试创建一种方法来记录任务列表的内部异常。问题是在某些地方我只有(A)List<Task>,而在其他地方我有(B)List<Task<Something>>。我尝试创建一个接受 A 的方法,但编译器不接受使用 B 调用该方法,因此我将 B 称为“MultipleTasksExceptionHandler(B as A)”,但在方法内部我收到 null。所以我必须创建几乎相同的方法,如下所示,它们可以工作,但是还有其他方法可以避免这种代码重复吗?
public static void MultipleTasksExceptionHandler<T>(IList<Task<T>> tasks, ILogger logger)
{
var exceptions = tasks.Where(task => task.IsFaulted).SelectMany(x => x.Exception.InnerExceptions);
foreach (var exception in exceptions)
{
logger.LogError(exception, exception.Message);
}
}
public static void MultipleTasksExceptionHandler(IList<Task> tasks, ILogger logger)
{
var exceptions = tasks.Where(task => task.IsFaulted).SelectMany(x => x.Exception.InnerExceptions);
foreach (var exception in exceptions)
{
logger.LogError(exception, exception.Message);
}
}
【问题讨论】:
标签: c# polymorphism task-parallel-library .net-5 code-duplication