我想包装AsyncFallbackPolicy <- AsyncFallbackPolicy<bool> <- AsyncRetryPolicy.包装AsyncFallbackPolicy<bool> <- AsyncRetryPolicy工作正常,生成的 PolicyWrap 为AsyncPolicyWrap<bool>。但是一旦我添加 AsyncFallbackPolicy 我就会收到以下错误:您已在非泛型 FallbackPolicy 上执行了泛型 .Execute 方法。非泛型 FallbackPolicy 仅定义返回 void 的后备操作;它永远不能返回替代的 TResult 值。要使用 FallbackPolicy 提供回退 TResult 值,您必须定义通用回退策略 FallbackPolicy。例如,将策略定义为 Policy.Handle.Fallback(/* some TResult value or Func<..., TResult> */);我通过执行该政策await policyWrap.ExecuteAsync(async () => await ...我不知道如何解决这个问题。可以这样包起来吗?如果是,怎么办?谢谢
1 回答
白板的微信
TA贡献1883条经验 获得超3个赞
不可能在 PolicyWrap 中混合通用和非通用回退策略。您应该将针对非泛型的行为移至AsyncFallbackPolicy
泛型中AsyncFallbackPolicy<bool>
。
说明:当AsyncFallbackPolicy<bool>
包含在 PolicyWrap 中时,它会创建一个AsyncPolicyWrap<bool>
只能用于执行异步返回的委托bool
。
由于错误消息中所述的原因,非泛型AsyncFallbackPolicy
无法参与异步返回的执行:bool
非泛型 FallbackPolicy 仅定义返回 void 的后备操作;它永远不能返回替代的 TResult 值。
IE 如果调用非泛型AsyncFallbackPolicy
(如果满足其 Handle 子句的条件),它只包含异步返回的代码void
...但void
不是 type 允许的返回值bool
,因此执行没有意义...所以波莉不允许。
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消