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

TaW сказал в этот комментарий :

Вы можете вызвать Refresh () перед началом длительной работы.

blockquote>

Refresh () был именно тем, что мне было нужно!

16
задан Samuel 6 April 2009 в 14:52
поделиться

5 ответов

На основе

Методы расширения F# в C#

кажется, что на скомпилированной форме существует атрибут. Поэтому посмотрите, имеет ли метод этот атрибут:

http://msdn.microsoft.com/en-us/library/system.runtime.compilerservices.extensionattribute.aspx

18
ответ дан 30 November 2019 в 16:05
поделиться

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

bool isExtension=someMethod.IsDefined(typeof(ExtensionAttribute),true);
22
ответ дан 30 November 2019 в 16:05
поделиться

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

3
ответ дан 30 November 2019 в 16:05
поделиться

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

1
ответ дан 30 November 2019 в 16:05
поделиться

Разве компилятор не переключает все дополнительные методы в вызовы статического метода во время компиляции?

myList.First();

становится

Enumerable.First(myList);

Если это верно, затем нет никаких дополнительных методов во времени выполнения .NET (где Вы отражаетесь).

0
ответ дан 30 November 2019 в 16:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: