Если использовать асинхронный в синхронном методе, который возвращает возврат? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь найти подходящий метод для проверки запросов POST и PUT.Я предложил 2 метода: «Validate ()» и «ValidateAsync ()».Я просто не уверен, какой использовать.


'Validate ()' , синхронный метод, возвращающий 'yield return', и с async.Result (без ожидания)Запросы в нем, которые, насколько я понимаю, аналогичны синхронным (если я не ошибаюсь и они асинхронны):

public IEnumerable<ValidationResult> Validate(Entity entity)
{
    // ** NOTE: NO AWAIT AND USING '.RESULT' TO GET VALUE.**
    var idExistsAsync = repo.ExistsAsync(e => e.Id == entity.Id).Result;
    if (!idExistsAsync)
        yield return new ValidationResult("Id does not exist");

    // ** NOTE: NO AWAIT AND USING '.RESULT' TO GET VALUE.**
    var userNameExistsAsync = repo.ExistsAsync(e => e.UserName == entity.UserName).Result;
    if (!userNameExistsAsync)
        yield return new ValidationResult("UserName does not exist");
}
  • В приведенном выше примере, будет ли иметь значение, если я используюExistsAsync (). Результат или просто использование не асинхронной версии, Exsits ().
    var idExists = repo.Exists(e => e.Id == entity.Id);
    var userNameExists = repo.Exists(e => e.UserName == entity.UserName);

'ValidateAsync ()' , асинхронный метод, но без'yield return', добавление 'ошибок' в список и возвращение List ():

public async Task<IEnumerable<ValidationResult>> ValidateAsync(Entity entity)
{
    var result = new List<ValidationResult>();

    var idExistsAsync = await repo.ExistsAsync(e => e.Id == entity.Id);
    if (!idExistsAsync)
        result.Add(new ValidationResult("Id does not exist"));

    var userNameExistsAsync = await repo.ExistsAsync(e => e.UserName == entity.UserName);
    if (!userNameExistsAsync)
        result.Add(new ValidationResult("UserName does not exist"));

    return result;
}

Q: Каков наилучший подход?Validate () или ValidateAsync ()?Если Validate (), используя ExistsAsync (). Результат или Exists ()?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...