Vorrei produrre (a livello di codice - C #) un elenco di tutte le classi nel mio assembly.
Eventuali suggerimenti o codice di esempio su come eseguire questa operazione? Riflessione?
Vorrei produrre (a livello di codice - C #) un elenco di tutte le classi nel mio assembly.
Eventuali suggerimenti o codice di esempio su come eseguire questa operazione? Riflessione?
Risposte:
Usa Assembly.GetTypes
. Per esempio:
Assembly mscorlib = typeof(string).Assembly;
foreach (Type type in mscorlib.GetTypes())
{
Console.WriteLine(type.FullName);
}
Vorrei solo aggiungere all'esempio di Jon. Per ottenere un riferimento al proprio assembly, è possibile utilizzare:
Assembly myAssembly = Assembly.GetExecutingAssembly();
System.Reflection
namespace.
Se si desidera esaminare un assembly a cui non si ha alcun riferimento, è possibile utilizzare uno di questi:
Assembly assembly = Assembly.ReflectionOnlyLoad(fullAssemblyName);
Assembly assembly = Assembly.ReflectionOnlyLoadFrom(fileName);
Se intendi creare un'istanza del tuo tipo dopo averlo trovato:
Assembly assembly = Assembly.Load(fullAssemblyName);
Assembly assembly = Assembly.LoadFrom(fileName);
Vedere la documentazione della classe Assembly per ulteriori informazioni.
Una volta che hai il riferimento Assembly
all'oggetto, puoi usare assembly.GetTypes()
come Jon ha già dimostrato.
typeof
con un tipo che conosci si trova in quell'assembly e quindi con la Assembly
proprietà, come nel mio esempio.