From 15794e07f76fb7ba834038e0dc32acb42b5106da Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 5 Apr 2026 11:21:56 -0400 Subject: [PATCH] Remove one reflection-based helper --- SabreTools.Metadata.Filter/FilterKey.cs | 6 ++- SabreTools.Metadata.Filter/FilterRunner.cs | 10 +++-- SabreTools.Metadata/TypeHelper.cs | 43 ---------------------- 3 files changed, 12 insertions(+), 47 deletions(-) diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs index b8867fd8..8d0160b1 100644 --- a/SabreTools.Metadata.Filter/FilterKey.cs +++ b/SabreTools.Metadata.Filter/FilterKey.cs @@ -21,7 +21,11 @@ namespace SabreTools.Metadata.Filter /// /// Cached item type names for filter selection /// - private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); +#if NET5_0_OR_GREATER + private static readonly string[] _datItemTypeNames = Enum.GetNames(); +#else + private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); +#endif /// /// Validating combined key constructor diff --git a/SabreTools.Metadata.Filter/FilterRunner.cs b/SabreTools.Metadata.Filter/FilterRunner.cs index 6d932b49..8ab6fa96 100644 --- a/SabreTools.Metadata.Filter/FilterRunner.cs +++ b/SabreTools.Metadata.Filter/FilterRunner.cs @@ -17,7 +17,11 @@ namespace SabreTools.Metadata.Filter /// /// Cached item type names for filter selection /// - private static readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames(); +#if NET5_0_OR_GREATER + private static readonly string[] _datItemTypeNames = Enum.GetNames(); +#else + private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType)); +#endif public FilterRunner(FilterObject[] filters) { @@ -38,7 +42,7 @@ namespace SabreTools.Metadata.Filter { Header => "header", Machine => "machine", - DatItem => TypeHelper.GetXmlRootAttributeElementName(obj.GetType()), + DatItem datItem => datItem.ItemType.ToString(), _ => null, }; @@ -52,7 +56,7 @@ namespace SabreTools.Metadata.Filter // Skip filters not applicable to the item if (filterKey.StartsWith("item.") && Array.IndexOf(_datItemTypeNames, itemName) == -1) continue; - else if (!filterKey.StartsWith("item.") && !filterKey.StartsWith(itemName)) + else if (!filterKey.StartsWith("item.") && !filterKey.StartsWith(itemName, StringComparison.OrdinalIgnoreCase)) continue; // If we don't get a match, it's a failure diff --git a/SabreTools.Metadata/TypeHelper.cs b/SabreTools.Metadata/TypeHelper.cs index 7e732e67..4a42a98d 100644 --- a/SabreTools.Metadata/TypeHelper.cs +++ b/SabreTools.Metadata/TypeHelper.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Reflection; using System.Xml.Serialization; using SabreTools.Data.Models.Metadata; @@ -9,48 +8,6 @@ namespace SabreTools.Metadata // TODO: Investigate ways of either caching or speeding up these methods public static class TypeHelper { - /// - /// Attempt to get all DatItem types - /// - public static string[] GetDatItemTypeNames() - { - List typeNames = []; - - // Loop through all loaded assemblies - foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) - { - // If not all types can be loaded, use the ones that could be - Type?[] assemblyTypes = []; - try - { - assemblyTypes = assembly.GetTypes(); - } - catch (ReflectionTypeLoadException rtle) - { - assemblyTypes = Array.FindAll(rtle.Types ?? [], t => t is not null); - } - - // Loop through all types - foreach (Type? type in assemblyTypes) - { - // If the type is invalid - if (type is null) - continue; - - // If the type isn't a class or doesn't implement the interface - if (!type.IsClass || !typeof(DatItem).IsAssignableFrom(type)) - continue; - - // Get the XML type name - string? elementName = GetXmlRootAttributeElementName(type); - if (elementName is not null) - typeNames.Add(elementName); - } - } - - return [.. typeNames]; - } - /// /// Attempt to get the DatItem type from the name ///