Gab*_*Gab 2 c# func task-parallel-library
我有很多方法需要从外部API获取数据并以相同的方式管理错误.
所以我想避免在所有方法中使用相同的代码......
我试图使用Func,我有这个代码工作的方法没有参数.
方法 :
private async Task<T> ExecuteAction<T>(Func<Task<T>> action) where T : class
{
var securityException = false;
object response = null;
try
{
response = await action();
}
catch (MySecurityException)
{
securityException = true;
}
if (securityException)
{
// new login
response = await action();
}
else if (// other condition)
{
//Do something
}
return (T) response;
}
Run Code Online (Sandbox Code Playgroud)
方法调用:
Func<Task<string>> action = myApiClient.Action;
var test = await ExecuteAction<string>(action);
Run Code Online (Sandbox Code Playgroud)
我怎么能用参数做同样的事情?就像是 :
Func<Task<string>> action = myApiClient.Action(parameter1, parameter2);
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来修改我的方法来添加参数?
只需使用lambda表达式:
Func<Task<string>> action = ()=> myApiClient.Action(parameter1, parameter2)
Run Code Online (Sandbox Code Playgroud)
并将其传递给您已有的方法.
| 归档时间: |
|
| 查看次数: |
835 次 |
| 最近记录: |