Polly:用 AsyncFallbackPolicy 包裹 AsyncFallbackPolicy<TResult>
Polly: wrap AsyncFallbackPolicy<TResult> with AsyncFallbackPolicy
我想包装 AsyncFallbackPolicy <- AsyncFallbackPolicy<bool> <- AsyncRetryPolicy
.
的组合
包装 AsyncFallbackPolicy<bool> <- AsyncRetryPolicy
工作正常,生成的 PolicyWrap 是 AsyncPolicyWrap<bool>
。但是,一旦我添加 AsyncFallbackPolicy,我就会收到以下错误:
You have executed the generic .Execute method on a
non-generic FallbackPolicy. A non-generic FallbackPolicy only defines
a fallback action which returns void; it can never return a substitute
TResult value. To use FallbackPolicy to provide fallback TResult
values you must define a generic fallback policy
FallbackPolicy. For example, define the policy as
Policy.Handle.Fallback(/* some TResult
value or Func<..., TResult> */);
我通过await policyWrap.ExecuteAsync(async () => await ...
执行政策
我不知道如何解决这个问题。可以这样包裹吗?如果是,如何?
谢谢
不能在 PolicyWrap 中混合通用和非通用回退策略。您应该将针对非通用 AsyncFallbackPolicy
的行为移至通用 AsyncFallbackPolicy<bool>
.
说明:当AsyncFallbackPolicy<bool>
包含在PolicyWrap中时,它会创建一个AsyncPolicyWrap<bool>
,只能用于异步执行委托returning bool
.
非泛型 AsyncFallbackPolicy
无法异步参与 returning bool
的执行,原因如错误消息中所述:
A non-generic FallbackPolicy only defines a fallback action which returns void; it can never return a substitute TResult value.
IE 如果非泛型 AsyncFallbackPolicy
被调用(如果满足其 Handle 子句的条件),它只包含异步代码 return void
... 但是void
不是类型 bool
允许的 return 值,因此执行没有意义...所以 Polly 不允许它。
我想包装 AsyncFallbackPolicy <- AsyncFallbackPolicy<bool> <- AsyncRetryPolicy
.
包装 AsyncFallbackPolicy<bool> <- AsyncRetryPolicy
工作正常,生成的 PolicyWrap 是 AsyncPolicyWrap<bool>
。但是,一旦我添加 AsyncFallbackPolicy,我就会收到以下错误:
You have executed the generic .Execute method on a non-generic FallbackPolicy. A non-generic FallbackPolicy only defines a fallback action which returns void; it can never return a substitute TResult value. To use FallbackPolicy to provide fallback TResult values you must define a generic fallback policy FallbackPolicy. For example, define the policy as Policy.Handle.Fallback(/* some TResult value or Func<..., TResult> */);
我通过await policyWrap.ExecuteAsync(async () => await ...
我不知道如何解决这个问题。可以这样包裹吗?如果是,如何?
谢谢
不能在 PolicyWrap 中混合通用和非通用回退策略。您应该将针对非通用 AsyncFallbackPolicy
的行为移至通用 AsyncFallbackPolicy<bool>
.
说明:当AsyncFallbackPolicy<bool>
包含在PolicyWrap中时,它会创建一个AsyncPolicyWrap<bool>
,只能用于异步执行委托returning bool
.
非泛型 AsyncFallbackPolicy
无法异步参与 returning bool
的执行,原因如错误消息中所述:
A non-generic FallbackPolicy only defines a fallback action which returns void; it can never return a substitute TResult value.
IE 如果非泛型 AsyncFallbackPolicy
被调用(如果满足其 Handle 子句的条件),它只包含异步代码 return void
... 但是void
不是类型 bool
允许的 return 值,因此执行没有意义...所以 Polly 不允许它。