using System; using System.Collections.Generic; using System.Reflection; public static class TC { public static Type[] GetAllSubTypes(Type aBaseClass) { List list = new List(); Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); Type[] array = null; int i = 0; Assembly[] array2 = assemblies; for (int length = array2.Length; i < length; i++) { array = array2[i].GetTypes(); int j = 0; Type[] array3 = array; for (int length2 = array3.Length; j < length2; j++) { if (array3[j].IsSubclassOf(aBaseClass)) { list.Add(array3[j]); } } } return list.ToArray(); } public static Type GetType(Type t, string typeName) { int num = 0; Type[] allSubTypes = GetAllSubTypes(t); int length = allSubTypes.Length; object result; while (true) { if (num < length) { if (allSubTypes[num].Name == typeName) { result = allSubTypes[num]; break; } num++; continue; } result = null; break; } return (Type)result; } }