I recently узнал, что любой объект с методом GetAwaiter
, возвращающий awaiter, может быть await
-ed. Это верно, даже если это метод расширения, то есть в основном любой объект может быть сделан await
-able, если вы так решите.Можно ли определить, является ли объект ожидаемым во время выполнения?
Но есть ли способ рассказать во время выполнения, если объект await
-able? Нормальное отражение не будет работать, поскольку оно не отображает методы расширения объекта.
У меня нет особой необходимости при задании этого вопроса, мне просто интересно, если это возможно.
Нет, потому что оба метода используют утиную печать, которая выполняется компилятором. Даже если бы вы могли, что бы вы с этой информацией? –
Есть ли простая причина, по которой вы не можете искать методы расширения с отражением? Я понимаю, почему они не доступны, но я не вижу причин, по которым вы не можете их искать. – 31eee384
@ 31eee384 набор доступных расширений зависит от используемых операторов в исходном коде или от набора сборок, которые в данный момент загружаются. – usr