替代 "AsyncRetryPolicy" 类型的旧 Polly 包

Alternative to "AsyncRetryPolicy" type in older Polly packages

我创建了一个使用 Polly 进行电子邮件重试的新 code/project,我选择了最新的 Polly Nuget 包 v7.2.1。 但后来我们似乎有其他项目使用旧版本的 Polly (v2.2.7),因此我的项目已降级包。

但是在降级后由于不再识别这种类型而无法编译 - "AsyncRetryPolicy"。

我可以使用旧版本的 Polly 替代此类型吗?

我的代码:

private AsyncRetryPolicy<Response> CreatePollyPolicy(SendEmailMessageRequest request)
        {
            var policy = Policy.Handle<Exception>()
                .OrResult<SendGrid.Response>(response => 500)
                .WaitAndRetryAsync(
                5, retryAttempt => TimeSpan.FromSeconds(10 * retryAttempt),
                async (exception, timeSpan, retryCount, context) =>
                     {
                         await LogFailMessage(request);
                     }
                 );

            return policy;
        }

对于 Polly v2.2.7,由 .WaitAndRetryAsync(...) 编辑的策略类型 return 是 可能 RetryPolicy<Response>.

在许多开发环境中,如果您将鼠标悬停在 var 关键字或 WaitAndRetryAsync(...) 上 - 或者如果您检查来自 [=10] 的 return 类型的智能感知=] - 它会告诉你类型是什么。

但是,处理结果的策略(.OrResult<TResult>(...) 子句)直到 v4.3.0 才添加,因此您将无法在问题原样,v2.2.7。如果可以的话,建议将使用 v2.2.7 的项目升级到更高版本(/最新)的 Polly。