using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace NBF { public static class Reflection { static Assembly _assembly; static Reflection() { _assembly = AppDomain.CurrentDomain.GetAssemblies().First(a => a.GetName().Name == "Assembly-CSharp"); Types = _assembly.GetTypes(); } public static Type[] Types { get; private set; } /// /// 获取所有非抽象的派生类 /// /// /// public static List GetAllNonAbstractDerivedTypes() { Type baseType = typeof(T); Assembly assembly = Assembly.GetAssembly(baseType); List derivedTypes = assembly.GetTypes() .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(baseType)) .ToList(); return derivedTypes; } } }