@PashaKrizskiy

Как получить список методов, свойств, полей, событий, классов, структур, интерфейсов в C#?

Все привет!
Сам нашел пока что два способа: 1 - рефлексия, 2 - самописный парсер, рефлексия более правильный вариант, как мне кажется, но ограниченный тем, что предоставляет лишь "объявления" методов, классов и т.д., получить доступ к содержимому тел элементов возможности нет. Самописный парсер ни в чем не ограничен, но все же было бы интересно узнать, какие еще есть способы получить функциональные элементы?
  • Вопрос задан
  • 1019 просмотров
Пригласить эксперта
Ответы на вопрос 3
Nipheris
@Nipheris Куратор тега C#
Ваши два способа - это решения совершенно разных задач. С помощью рефлексии можно получить информацию о сущностях (методах, свойствах, классах, полях, ... ) в уже скомпилированных сборках. Рефлексия не работает и не может работать с исходным кодом никак. С помощью "самописаного парсера" (вообще я бы советовал вам взять Roslyn-компиляторы) вы можете обработать исходный код и получить из него всё что вам необходимо, но тогда вам нужен собственно исходный код.

Вы какую задачу решаете-то?
Ответ написан
Комментировать
Roslyn - все уже сделано.
https://youtu.be/jWyYs_LJDPU?t=1872
Ответ написан
Комментировать
impwx
@impwx
Разработчик
Есть еще Mono.Cecil - альтернативная реализация рефлексии, позволяющая "расковырять" любую сборку, или создать свою. В том числе можно получить IL-код методов. Конечно, исходного кода на С# не получите, но проанализировать все равно можно. На основе Mono.Cecil сделан, например, декомпилятор IlSpy.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы