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 : 这是完全未经测试的.