Как получить список методов, свойств, полей, событий, классов, структур, интерфейсов в C#?
Все привет!
Сам нашел пока что два способа: 1 - рефлексия, 2 - самописный парсер, рефлексия более правильный вариант, как мне кажется, но ограниченный тем, что предоставляет лишь "объявления" методов, классов и т.д., получить доступ к содержимому тел элементов возможности нет. Самописный парсер ни в чем не ограничен, но все же было бы интересно узнать, какие еще есть способы получить функциональные элементы?
Ваши два способа - это решения совершенно разных задач. С помощью рефлексии можно получить информацию о сущностях (методах, свойствах, классах, полях, ... ) в уже скомпилированных сборках. Рефлексия не работает и не может работать с исходным кодом никак. С помощью "самописаного парсера" (вообще я бы советовал вам взять Roslyn-компиляторы) вы можете обработать исходный код и получить из него всё что вам необходимо, но тогда вам нужен собственно исходный код.
Есть еще Mono.Cecil - альтернативная реализация рефлексии, позволяющая "расковырять" любую сборку, или создать свою. В том числе можно получить IL-код методов. Конечно, исходного кода на С# не получите, но проанализировать все равно можно. На основе Mono.Cecil сделан, например, декомпилятор IlSpy.