Estrarre da un assembly i tipi derivati non astratti
Scritto da
Antonio Pierascenzi il
venerdì 28 ottobre 2011
•
Linguaggio:
• 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