我下载了ShopifySharp项目,并试图通过实现IRequestExecutionPolicy (https://github.com/nozzlegear/ShopifySharp/blob/master/ShopifySharp/Infrastructure/Policies/RetryExecutionPolicy.cs)来制定自己的执行策略。
在示例项目中,没有这样的“未实现错误”。但是,类似的实现将这个"AsyncStateMachine(typeof(SmartRetryExecutionPolicy.d__5<>))“放在方法之前。
据我所知,使方法异步更改签名,因此不实现Run方法。我在这方面不是很有经验,所以我们很感谢你的帮助。
public delegate Task<RequestResult<T>> ExecuteRequestAsync<T>(CloneableRequestMessage request);
public interface IRequestExecutionPolicy
{
Task<RequestResult<T>> Run<T>(CloneableRequestMessage requestMessage, ExecuteRequestAsync<T> executeRequestAsync, CancellationToken cancellationToken, int? graphqlQueryCost = null);
}public class LeakyBucketExecutionPolicy : IRequestExecutionPolicy{
public LeakyBucketExecutionPolicy(){}
public async Task<RequestResult<T>> Run<T>(CloneableRequestMessage baseRequest, ExecuteRequestAsync<T> executeRequestAsync, CancellationToken cancellationToken, int? graphqlQueryCost = null)
{
//retry code
}发布于 2021-09-29 10:30:52
据我所知,
使方法异步更改了签名。
不,不是的。这正是为什么您永远不会在接口中看到async的原因。
async关键字只是为了让您可以做await和return T而不是return Task<T>。编译器将为您包装它。但是,签名和运行时调用方法的方式都是相同的。
https://stackoverflow.com/questions/69368173
复制相似问题