在我的应用程序中,我需要在所有API请求之前调用一个方法。如果特定条件满足,则我需要执行该方法中的一组语句。
为了将其泛化,我创建了一个类似于这样的帮助器类。
为了将其泛化,我创建了一个类似于这样的帮助器类。
public class CertificateValidator {
readonly IDependencyService _serviceLocator;
public CertificateValidator(IDependencyService serviceLocator) {
_serviceLocator = serviceLocator;
}
public async Task <T> TryExecuteWithCertificateValidationAsync <T> (Task <T> operation) {
var service = _serviceLocator.Get <IDeviceService> ();
if (service.CertificateValidationRequired()) {
// My Code.
}
T actualResult = await operation;
return actualResult;
}
在我的视图模型中,我已经完成了以下操作。
而在我看来,我已经这样做了。
public CertificateValidator ValidateCertificate => new CertificateValidator(_serviceLocator);
var response = await ValidateCertificate
.TryExecuteWithCertificateValidationAsync(MyMethodAsync());
private async Task<RequestResult<Response>> MyMethodAsync()
{
// Some code
}
但是,当我像这样实现时,执行流程是这样的:
首先调用MyMethodAsync()。
当它到达
await
方法时,它会执行TryExecuteWithCertificateValidationAsync方法并在那里运行剩余的代码。- 然后,当它到达
T actualResult = await operation; return actualResult;
时,控制权返回到MyMethodAsync() - await语句。
我的疑问是:
我需要完全执行TryExecuteWithCertificateValidationAsync,然后才能执行MyMethodAsync。
简而言之,如我早先所说,我需要在调用所有API调用之前执行一组代码。 我如何使用async和await实现类似的功能。