c# - 如何重载函数以接受回调参数的异步和同步版本
问题描述
public static T SyncVer<T>(Func<T> callback)
{
using (new LogContext("new logging context"))
{
try
{
return callback();
}
catch (Exception ex)
{
Console.WriteLine(ex);
throw;
}
}
}
public static async Task<T> AsyncVer<T>(Func<Task<T>> callback)
{
using (new LogContext("new logging context"))
{
try
{
return await callback();
}
catch (Exception ex)
{
Console.WriteLine(ex);
throw;
}
}
}
请考虑上面的代码。您可能会看到两个函数中的大部分代码是相同的。我正在寻找一种通过将它们重载为一个来将它们分组的方法(或者如果有办法取出两个函数的相似部分),这样我就不需要复制内容了?
提供的任何帮助将不胜感激。提前致谢。
解决方案
我会尝试这样的事情:
public static T SyncVer<T>(Func<T> callback)
{
return AsyncVer(() => Task.FromResult(callback())).GetAwaiter().GetResult();
}
推荐阅读
- firebase - 基于firestore Map的key查询
- javascript - 制表网格刷新数据调用问题
- python - python f字符串函数SyntaxError:linux中的无效语法
- javascript - 使用 Fastify 在 Swagger 中添加动态查询参数
- kentico-mvc - 小部件 ui 在 kentico cms 中重叠
- oracle - 无效标识符错误
- javascript - 将 Microsoft Stream 嵌入到任务模块 Microsoft Teams
- owl - ObjectProperty 域/范围可以与 ObjectAllValuesFrom 冗余吗?
- mysql - 如何创建表示表上数据前面的触发器?
- gitlab - 创建合并请求时,我可以不向受理人和批准人发送通知吗?