public static ArrayList getAvailableRacesFromFolder(string folder)
{
// Init
ArrayList races = new ArrayList();
Type lifeletType = Type.GetType("LifeSimulation.Core.Lifelet");
// Loop all dll files
System.IO.DirectoryInfo binDir = new System.IO.DirectoryInfo(System.Windows.Forms.Application.StartupPath);
foreach(System.IO.DirectoryInfo dir in binDir.Parent.GetDirectories(folder)) {
foreach(string file in System.IO.Directory.GetFiles(dir.FullName,"*.dll")) {
// Load the dll
System.Reflection.Assembly dll = System.Reflection.Assembly.LoadFrom(file);
// Loop all contained types
foreach (Type type in dll.GetTypes()) {
// Is this a lifelet?
if(type.IsSubclassOf(lifeletType)) races.Add(type);
}
}
}
return races;
}