Как определить один метод "Является ли метод расширения типа или нет?" - PullRequest
2 голосов
/ 24 июля 2011

Я хочу написать метод с именем IsExtensionMethod, его сигнатура:

public bool IsExtensionMethod(object anObject, string method)
{
    // if method was an extension for anObject return true else false
}

Как я могу это сделать?

Я пытался использовать следующий код, но в некоторых случаях возвращаемое значениеневерно:

public bool IsExtensionMethod(object anObject, string method)
{
    return anObject.GetType().GetMethods().Where(item => item.Name == method).Count() == 0;
}

1 Ответ

2 голосов
/ 24 июля 2011

Компилятор добавляет атрибут CompilerServices.ExtensionAttribute в методы расширения при компиляции. Ищите этот атрибут.

http://www.hanselman.com/blog/HowDoExtensionMethodsWorkAndWhyWasANewCLRNotRequired.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...