<PackageReference Include="NUnit" Version="4.4.0" />

NUnit.Framework.Internal.Reflect

public static class Reflect
Helper methods for inspecting a type by reflection. Many of these methods take ICustomAttributeProvider as an argument to avoid duplication, even though certain attributes can only appear on specific types of members, like MethodInfo or Type. In the case where a type is being examined for the presence of an attribute, interface or named member, the Reflect methods operate with the full name of the member being sought. This removes the necessity of the caller having a reference to the assembly that defines the item being sought and allows the NUnit core to inspect assemblies that reference an older version of the NUnit framework.
namespace NUnit.Framework.Internal { public static class Reflect { public static bool HasMethodWithAttribute(Type fixtureType, Type attributeType); public static object Construct(Type type); public static object Construct(Type type, object[] arguments); public static object InvokeMethod(MethodInfo method, object fixture); public static object InvokeMethod(MethodInfo method, object fixture, params object[] args); public static ConstraintResult InvokeApplyTo(IConstraint constraint, Type actualType, object actual); public static ConstraintResult InvokeApplyToEnumerable(IEnumerableConstraint constraint, object actual, Type itemType); public static PropertyInfo GetUltimateShadowingProperty(Type type, string name, BindingFlags bindingFlags); public static MethodInfo GetDefaultIndexer(Type type, Type[] indexerTypes); public static MemberInfo[] GetMemberIncludingFromBase(this Type type, string name, BindingFlags flags); } }