Domanda

Per la mia domanda mi piacerebbe analizzare attraverso un assemblaggio ed estrarre ogni metodo e memorizzare il nome del metodo e il codice sorgente in uno dei miei oggetti (ho definito nel mio codice).

dove dovrei cominciare a implementare questo?

EDIT: Dalle risposte e commenti ho visto che non è così facile da ottenere il codice sorgente dalle assemblee. Poi dove dovrei cominciare se voglio ottenere il codice sorgente da file di codice sorgente che non sono nella mia soluzione corrente (Visual Studio)?

È stato utile?

Soluzione

Il gruppo non contiene il codice sorgente. Potreste essere in grado di estrarre l'IL, ma senza strumenti come riflettore o ildasm che non è particolarmente utile.

Per ottenere il nomi dei metodi , solo qualcosa di simile:

    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();

Altri suggerimenti

Per recuperare queste informazioni di debug, utilizzare il Comune Compiler Infrastructure:. Metadata API progetto

Questo consente di leggere i file .pdb (i file contenenti le informazioni di debug come file di origine e il numero di riga).

In primo luogo è necessario trovare tutti i tipi.

qui per farlo.

Poi si può bisogno di trovare tutti i metodi per ogni tipo.

qui per farlo.

Se avete bisogno di un esempio per portare tutti insieme fatemelo sapere.

Non sono sicuro di come ottenere il codice sorgente, ma se si sta cercando di ottenere informazioni sui metodi, si dovrebbe utilizzare la riflessione.

MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
                                                  BindingFlags.Static);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top