Cómo analizar un C # montaje y extraer todos los métodos
-
25-09-2019 - |
Pregunta
En mi solicitud me gustaría analizar a través de un ensamblaje y extraer cada método y almacenar el nombre del método y el código fuente en una de mis objetos (I definida en el código).
donde debería empezar a poner en práctica eso?
EDIT: A partir de las respuestas y los comentarios que vi que no es tan fácil de conseguir el código fuente de las asambleas. Entonces, ¿dónde debería empezar si quiero obtener el código fuente de los archivos de código fuente que no están en mi solución actual (Visual Studio)?
Solución
El montaje de no contiene el código fuente. Usted puede ser capaz de extraer la IL, pero sin herramientas como reflector o ildasm que no es especialmente útil.
Para obtener el nombres de los métodos , simplemente algo como:
var assembly = Assembly.GetExecutingAssembly();
var names = (from type in assembly.GetTypes()
from method in type.GetMethods(
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static)
select type.FullName + ":" + method.Name).Distinct().ToList();
Otros consejos
Para recuperar esta información de depuración, utilice el Compilador Común Infraestructura:. Metadatos proyecto API
Esto le permite leer los archivos .pdb
(los archivos que contienen la información de depuración como el archivo de origen y número de línea).
No estoy seguro de cómo obtener el código fuente, pero si usted está tratando de obtener información acerca de los métodos, se debe utilizar la reflexión.
MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
BindingFlags.Static);