I need to retrieve all enums that were loaded from a given set of Assemblies.
+2
A:
Assuming you have the list of Assembly
objects you want to check:
IEnumerable<Assembly> assemblies; // assign the assemblies you want to check here
foreach (Assembly a in assemblies) {
foreach (Type t in assembly.GetTypes()) {
if (t.IsEnum) {
// found an enum! Do whatever...
}
}
}
thecoop
2009-12-16 11:28:53
+2
A:
You should be able to use Assembly.GetTypes()
to get all the types for the assembly. For each type, you can use Type.IsEnum
property to see if it's an enum.
dcp
2009-12-16 11:29:02
+5
A:
List<Type> list = new List<Type>();
foreach (Assembly ass in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (Type t in ass.GetExportedTypes())
{
if (t.IsEnum)
{
list.Add(t);
}
}
}
That should do, for all assemblies loaded by the current Appdomain, to get just from defined assemblies, just adjust ;-)
BeowulfOF
2009-12-16 11:32:17
+2
A:
You can also use LINQ to return a list of all enum types from a list of assemblies.
IEnumerable<Assembly> assemblies;
// give assemblies some value
var enums = from assembly in assemblies let types = assembly.GetTypes() from type in types where type.IsEnum select type;
enums
will be of type IEnumerable.
Matt Olenik
2009-12-16 11:43:38