Files
linker/linker.libs/ReflectionHelper.cs
snltty 33a9cfedc5 sync
2024-06-24 23:06:29 +08:00

33 lines
1.0 KiB
C#

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