LifeSimulation.Core.World.getAvailableRacesFromFolder C# (CSharp) Method

getAvailableRacesFromFolder() public static method

public static getAvailableRacesFromFolder ( string folder ) : ArrayList
folder string
return System.Collections.ArrayList
        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;
        }