Я произвел огромный рефакторинг и преобразовал сотни методов веб-API из синхронизации в асинхронную.
Проблема в том, что теперь у меня много проблем! Главным образом потому, что каждый вызывающий из этих методов должен использовать ключевое слово await при каждом вызове.
Компилятор был полезен, так как в большинстве случаев можно обнаружить фиксированные ошибки / предупреждения компилятора при просмотре, но есть случаи, когда молчание происходиткомпилятор не помогает.
Например, в таких ситуациях:
public async Task<Item> Example()
{
return new Item
{
Property = GetName();
};
}
private Task<string> GetName()
{
return Task.FromResult("Hello");
}
class Item
{
public object Property { get; set; }
}
Обратите внимание, что метод GetName
не ожидается, но компилятор не будетне жаловаться и не выдавать никаких предупреждений, потому что свойство имеет тип object
и будет принимать все (включая Task
)
Есть ли способ обнаружить такую неожиданную задачу? Может быть, расширение или хороший трюк?