ReflectionUtil
public static TAttribute[] GetAttributes<TAttribute>(this MemberInfo item) where TAttribute : Attribute
public static Type[] GetAvailableTypesOrdered(this Assembly assembly, bool includeNonExported = false)
If the extended type is a Foo[] or IEnumerable{Foo} which is assignable from Foo[] this method will return typeof(Foo)
otherwise null.