refactor(UXAssist): split Util into focused helpers with forwarding facade

This commit is contained in:
2026-06-23 08:04:58 +08:00
parent f4b163fae9
commit ed916ebe7f
4 changed files with 112 additions and 54 deletions
+32
View File
@@ -0,0 +1,32 @@
using System;
using System.Linq;
using System.Reflection;
namespace UXAssist.Common.Utils;
public static class ReflectionUtil
{
/// <summary>
/// Returns all types from the assembly matching the predicate, tolerating partially loadable assemblies.
/// </summary>
public static Type[] GetTypesFiltered(Assembly assembly, Func<Type, bool> predicate)
{
try
{
return [.. assembly.GetTypes().Where(predicate)];
}
catch (ReflectionTypeLoadException ex)
{
return [.. ex.Types.Where(t => t != null).Where(predicate)];
}
}
public static Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) => GetTypesFiltered(assembly, t => string.Equals(t.Namespace, nameSpace, StringComparison.Ordinal));
public static Type[] GetTypesInNamespacePrefix(Assembly assembly, string prefix)
{
return GetTypesFiltered(assembly, t =>
t.Namespace != null &&
(t.Namespace == prefix || t.Namespace.StartsWith(prefix + ".", StringComparison.Ordinal)));
}
}