Подтвердить что ты не робот

Используя отражение, чтобы проверить, является ли метод "Метод расширения",

В рамках моего приложения у меня есть функция, которая получает MethodInfo и должна выполнять определенные операции над ней, в зависимости от того, является ли этот метод "Метод расширения".

Я проверил класс MethodInfo, и я не смог найти какое-либо свойство IsExtension или флаг, который показывает, что метод является расширением.

Кто-нибудь знает, как я могу найти это из метода MethodInfo?

4b9b3361

Ответ 2

Вы можете вызвать метод IsDefined в экземпляре MethodInfo, чтобы узнать это, проверив, применяется ли ExtensionAttribute к методу:

bool isExtension=someMethod.IsDefined(typeof(ExtensionAttribute),true);

Ответ 3

Это выглядит очень похоже на предыдущий question, возможно, стоит посмотреть. Предложение было искать классы и методы с ExtensionAttribute, который звучит так, как вы после.

Ответ 4

Если вы знаете, что вы получаете MethodInfo из экземпляра, вы можете легко проверить, является ли метод статическим. Методы расширения - это просто синтаксический сахар и преобразовываются в передачу статических вызовов методов в экземпляре.

Ответ 5

Не компилятор переключает все методы расширения в вызовы статических методов во время компиляции?

myList.First();

становится

Enumerable.First(myList);

Если это так, тогда нет методов расширения в среде выполнения .net(где вы отражаете).