using System; using System.Collections.Generic; using System.Linq; using System.Reflection; namespace linker.libs { public sealed class ReflectionHelper { public static IEnumerable GetInterfaceSchieves(Type type) { return GetInterfaceSchieves(AppDomain.CurrentDomain.GetAssemblies(), type); } public static IEnumerable GetInterfaceSchieves(Assembly[] assemblys, Type type) { return assemblys.SelectMany(c => c.GetTypes()) .Where(c => !c.IsAbstract).Where(c => c.GetInterfaces().Contains(type)); } public static IEnumerable GetSubClass(Assembly[] assemblys, Type type) { return assemblys.SelectMany(c => c.GetTypes()) .Where(c => !c.IsAbstract).Where(c => c.IsSubclassOf(type)); } public static IEnumerable GetEnums(Assembly[] assemblys) { return assemblys.SelectMany(c => c.GetTypes()) .Where(c => c.IsEnum); } } }