我有一个方法A
包装另一个方法的执行 B
通过在它之前和之后运行一些逻辑。方法B
可以是一个任务,也可以不是。所以为了能够 await
当方法 B
我必须执行两次 A
的任务方法如下:
public async Task A(int id, Action<int> b)
{
try
{
await BeforeAsync(id);
b(id);
await AfterAsync(id);
}
catch (Exception ex)
{
Handle(ex, id);
}
}
public async Task A(int id, Func<int,Task> b)
{
try
{
await BeforeAsync(id);
await b(id);
await AfterAsync(id);
}
catch (Exception ex)
{
Handle(ex, id);
}
}
有没有办法避免重复?
最佳答案
并非如此,假设一些愚蠢的事情,例如传递一个对象并使用强制转换计数来测试它:)
这个怎么样?
public Task A(int id, Action<int> b) => A(id, x => { b(a); return Task.CompletedTask; });
这样你就不会重复代码。
关于c# - 是否有一种通用方法来定义既不接收 Action 也不接收 Func<Task> 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57563964/