首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Polly:用AsyncFallbackPolicy<TResult>包AsyncFallbackPolicy

Polly:用AsyncFallbackPolicy<TResult>包AsyncFallbackPolicy
EN

Stack Overflow用户
提问于 2019-08-07 07:44:15
回答 1查看 1.5K关注 0票数 1

我想包装AsyncFallbackPolicy <- AsyncFallbackPolicy<bool> <- AsyncRetryPolicy的组合。

包装AsyncFallbackPolicy<bool> <- AsyncRetryPolicy工作得很好,得到的PolicyWrap是AsyncPolicyWrap<bool>。但是,一旦我添加了AsyncFallbackPolicy,我就会得到以下错误:

您已经在非泛型.Execute上执行了泛型FallbackPolicy方法。一个非泛型的FallbackPolicy只定义返回无效的回退操作;它永远不能返回替代的TResult值。若要使用FallbackPolicy提供回退TResult值,必须定义一般回退策略FallbackPolicy。例如,将策略定义为Policy.Handle.Fallback(/* TResult值或Func<.,TResult> */);

我通过await policyWrap.ExecuteAsync(async () => await ...执行这个政策

我想不出如何解决这个问题。可以这样包装吗?如果是,怎么做?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-20 06:48:53

不可能在PolicyWrap中混合通用策略和非泛型回退策略。您应该将非泛型AsyncFallbackPolicy的行为移到泛型AsyncFallbackPolicy<bool>中。

说明:当AsyncFallbackPolicy<bool>包含在PolicyWrap中时,它会创建一个只能用于异步执行委托返回boolAsyncPolicyWrap<bool>

由于错误消息中所述的原因,非泛型AsyncFallbackPolicy不能参与异步返回bool的执行:

一个非泛型的FallbackPolicy只定义返回无效的回退操作;它永远不能返回替代的TResult值。

如果调用了非泛型AsyncFallbackPolicy (如果满足其句柄子句的条件),则它只包含异步返回void的代码.但是void不是bool类型允许的返回值,所以执行没有意义.所以波利不允许这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57389344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档