2010-08-10 2 views
0

У меня есть требование получить тело метода из DLL-файла на C#. Я использую System.Reflection для получения имен методов, параметров и свойств и т. Д., Но не нашел способа получить тело метода.Можем ли мы получить тело метода из DLL-файла?

Пожалуйста, предложите мне идея ... :-)

+1

Что именно вы пытаетесь сделать? Зачем вам нужно тело метода? – Burt

+0

На самом деле я работаю, чтобы отслеживать изменения, внесенные в предыдущих версиях .dll –

+0

Так что мне нужно получить тело метода, где произошло изменение. –

ответ

1

Вы можете использовать обратный инженерный инструмент, как Reflector. (Разумеется, это может быть незаконно, в зависимости от ситуации.)

Также я не уверен, является ли это правильным ответом на часть вопроса «в C# .Net», так как это внешний инструмент , а не что-то, что вы можете легко сделать сами из своего собственного кода на C#. Для этого вам нужно интерпретировать IL, вы можете получить через отражение (см Jon Skeets answer) сами

+0

Я просто не хочу использовать рефлектор –

2

Ну, вы можете получить тело метода с использованием MethodBase.GetMethodBody(), который получает вам необработанный IL, локальные переменные и т.д.

Очевидно, вам нужно сначала загрузить сборку (например, Assembly.Load), затем получить соответствующий тип (Assembly.GetType), затем найти способ (Type.GetMethod), затем получить тело метода.

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