Polly policyretry resultcondition 和异常包装器 c#
Polly policyretry resultcondition and exception wrapper c#
我可以根据上面的 link 创建一个包装器。但我不确定如何将其设为通用。
我想要这个包装器不仅仅是结果 bool 检查,比如处理异常。
这是我的代码:
public class RetryWrapper
{
public static bool Execute(Func<bool> func)
{
RetryPolicy<bool> retryPolicyNeedsTrueResponse =
Policy.HandleResult<bool>(b => b != true)
.WaitAndRetry(new[]
{
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(10),
TimeSpan.FromSeconds(15)
});
return retryPolicyNeedsTrueResponse.Execute(func);
}
}
非常感谢任何帮助。提前致谢
要使其通用,我想你可以这样做
public static T Execute<T>(Func<T> func, Func<T,bool> success)
{
RetryPolicy<T> retryPolicyNeedsTrueResponse =
Policy.HandleResult<T>(b => success(T))
.WaitAndRetry(new[]
{
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(10),
TimeSpan.FromSeconds(15)
});
return retryPolicyNeedsTrueResponse.Execute(func);
}
注意 :这样做的好处充其量似乎是不确定的,你还需要另一个版本 async
.
您可能只需要一组时间跨度,重用它,让您的代码更具声明性并适应 polly 的所有其他功能。
注释 2 : 这是完全未经测试的.
我可以根据上面的 link 创建一个包装器。但我不确定如何将其设为通用。 我想要这个包装器不仅仅是结果 bool 检查,比如处理异常。
这是我的代码:
public class RetryWrapper
{
public static bool Execute(Func<bool> func)
{
RetryPolicy<bool> retryPolicyNeedsTrueResponse =
Policy.HandleResult<bool>(b => b != true)
.WaitAndRetry(new[]
{
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(10),
TimeSpan.FromSeconds(15)
});
return retryPolicyNeedsTrueResponse.Execute(func);
}
}
非常感谢任何帮助。提前致谢
要使其通用,我想你可以这样做
public static T Execute<T>(Func<T> func, Func<T,bool> success)
{
RetryPolicy<T> retryPolicyNeedsTrueResponse =
Policy.HandleResult<T>(b => success(T))
.WaitAndRetry(new[]
{
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(10),
TimeSpan.FromSeconds(15)
});
return retryPolicyNeedsTrueResponse.Execute(func);
}
注意 :这样做的好处充其量似乎是不确定的,你还需要另一个版本 async
.
您可能只需要一组时间跨度,重用它,让您的代码更具声明性并适应 polly 的所有其他功能。
注释 2 : 这是完全未经测试的.