В моем приложении мне нужно вызвать метод перед всем запросом API. Если определенное c условие выполнено, тогда мне нужно выполнить набор операторов в этом методе.
Чтобы обобщить это, я создал вспомогательный класс примерно так:
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
}
Но когда я реализую таким образом, поток выполнения будет
Первый MyMethodAsyn Будет вызван c ().
И когда он достигает метода await
, он выполняет метод TryExecuteWithCertificateValidationAsyn c и запускает оставшийся код там.
- А потом, когда он достигает
T actualResult = await operation; return
actualResult;
, управление go возвращается к MyMethodAsyn c () - жду заявления.
И мое сомнение здесь ,
Мне нужно полностью выполнить TryExecuteWithCertificateValidationAsyn c, а затем MyMethodAsyn c.
Короче говоря, как я говорил раньше Мне нужно выполнить набор кода, прежде чем я вызову все мои вызовы API. Как я могу добиться чего-то подобного, используя asyn c a a a await.