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

Как получить открытый статический метод базового класса?

У моего базового класса есть открытый статический метод, но когда я вызываю typeof(TDerived).GetMethods(BindingFlags.Public |BindingFlags.Static), мой метод не возвращается. (TDerived, конечно, наследуется каким-то образом от моего базового класса). У меня нет ссылки на мой базовый класс в месте этого запроса.
Что я делаю неправильно?

4b9b3361

Ответ 2

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

Ваш код, с вашего вопроса, станет следующим:

typeof(TDerived).BaseType.GetMethods(BindingFlags.Public | BindingFlags.Static)
                ^---+---^
                    |
                    +-- add this

Конечно, это будет получать только статические методы этого типа. Если вы хотите использовать все статические методы вашего собственного типа и базового типа, перейдите к опции FlattenHierarchy, которая @Ondrej ответил с, гораздо лучше.