Estrarre da un assembly i tipi derivati non astratti

Scritto da  Antonio Pierascenzi il venerdì 28 ottobre 2011  •  Linguaggio: C#   • Livello: 100


Dall'assembly corrente possiamo estrarre, via reflection, diverse classi che rispondono alle nostre necessità, ad esempio, per avere l'elenco di tutte le classi che derivano da una classe base escludendo quelle astratte, possiamo scrivere qualcosa del genere:

types = Assembly.GetExecutingAssembly().GetTypes();
var myTypes = types.Where(type => type.IsSubclassOf(typeof(ClasseBase))
&& (!type.IsAbstract)).ToList();
 

 


Nel codice precedente diamo per scontato il fatto che i tipi da ricercare siano nell'assembly corrente, se non è così dobbiamo caricare l'assembly desiderato attraverso, ad esempio la chiamata al metodo starico Load della classe Assembly:

Assembly myAssembly = Assembly.Load(fullName);


Tags: Reflection

 
x