, например.Как я могу определить, является ли метод C# асинхронным/ожидающим через отражение?
class Foo { public async Task Bar() { await Task.Delay(500); } }
Если мы отражающие над этим классом и методом, как я могу определить, является ли это фактическим асинхронным/ожидает метод, а не просто метода, который происходит вернуть задачу?
class Foo { public Task Bar() { return Task.Delay(500); } }
В конце концов, для чего это важно для вас? 'async' является деталью реализации метода и должен быть изменчивым без каких-либо забот потребителей. –
Потому что я пишу перехватчик IoC, который пытается отслеживать начало и конец вызова метода. –
Но если вы считаете, что метод 'async' на самом деле не« завершен »до тех пор, пока задача, которую он вернет, не будет обработана * любым * методом, который возвращает« Задача »как незавершенную до завершения задачи?Также рассмотрите, что метод non-async, возвращающий 'Task', может сделать несколько простых вещей сам, а затем отложить основную часть своей работы до внутреннего метода' async' и просто передать обратно вызывающему пользователю 'Task', созданный этим методом - Планируете ли вы попытаться обнаружить такую ситуацию? –