2011-04-21 2 views
2

Я могу получить методы класса, используя System.Type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly).Как исключить «методы свойств» в Type.GetMethods?

Однако возвращенный список будет включать в себя «методы собственности», например. get_PropertyX и set_PropertyX.

Как мы можем гарантировать, что возвращенный список исключает «методы свойств»?

+0

Может ли downvoter объяснить, почему? – Pacerier

ответ

8
var methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) 
.Where(m => !m.IsSpecialName); 
+1

'Методы MethodInfo [] были бы лучше. Это ясно указывает, какой тип переменной возвращается !!! –

+1

@Srinivas: Прежде всего, он не возвращает массив, так что это было бы ошибочным. Во-вторых, я не собираюсь вдаваться в дискуссию var-vs-Type, поскольку это чисто субъективно. Большинство программистов на C#, которые смотрят на эту строку, будут знать, что «методы» - это то, что они могут перебирать, и это обычно все, о чем мы заботимся. – StriplingWarrior

+0

не видел, где условие ... –

Смежные вопросы