static void Main() { string assemblyName = "BaseTest"; assemblyName = "System.Windows.Forms"; var list = GetAssemblyClasses(assemblyName); //var list = GetModInfo(assemblyName); foreach (var className in list) { Console.WriteLine("{0} : {1}", className.IsClass ? "Class" : "Struct", className.FullName); } Console.ReadLine(); } public static List<Type> GetModInfo(string assemblyName) { var list = (from m in Assembly.Load(assemblyName).GetModules() select m.GetTypes().Where(x => x.IsClass)).ToList(); var theList = new List<Type>(); foreach (var m in list) theList.AddRange(m); return theList; } public static List<Type> GetAssemblyClasses(string assemblyName) { var assembly = Assembly.Load(assemblyName); List<Type> classList = new List<Type>(); foreach (var module in assembly.GetModules()) { foreach (var type in module.GetTypes()) { // only interested in classes or struct if (!type.IsClass ) // && !type.IsValueType) continue; classList.Add(type); } } return classList; }