Assembly.GetAssemblyByName()
è probabilmente il biglietto per cercare un'assemblea diversa dalla tua. Verrà visualizzato nei collegamenti all'assieme dell'applicazione, quindi nella directory dell'applicazione corrente, quindi nel GAC. È anche possibile ottenere la classe Assembly assegnata a un'istanza di oggetto oa un tipo di riferimento statico chiamando GetType().Assembly
.
Da questa classe di assiemi, è possibile scorrere i tipi in esso contenuti come oggetti Tipo utilizzando GetExportedTypes()
. Questo restituirà solo tipi pubblici; quelli a cui si poteva accedere se si faceva riferimento all'assembly in modo statico. Puoi filtrarli con qualsiasi cosa tu possa analizzare in modo riflessivo; nome, tipi di genitori, nomi dei membri, attributi che decorano la classe o qualsiasi membro, ecc.
Grazie John. Una domanda: il "dove typeof (Controller) .IsAssignableFrom (t)" è sufficiente per confermare che si tratta di un tipo di controller? Sono un po 'nuovo anche a Linq, tra l'altro :) – morganpdx
Sì, dovrebbe essere sufficiente. Ho appena guardato il codice sorgente di MVC, e sembra che non gli importi se sia "EndWith (" Controller ")" in modo che tu possa prendere quella parte. –