Cache reflection calls when running utility lints and commands.

Reduces runtime of --check-yaml command to 70% of original.
This commit is contained in:
RoosterDragon
2023-03-28 19:04:14 +01:00
committed by Matthias Mailänder
parent 1a2aafa17c
commit 9dd4f938da
24 changed files with 116 additions and 87 deletions

View File

@@ -39,10 +39,10 @@ namespace OpenRA.Mods.Common.Lint
{
foreach (var traitInfo in actorInfo.Value.TraitInfos<TraitInfo>())
{
var fields = traitInfo.GetType().GetFields();
var fields = Utility.GetFields(traitInfo.GetType());
foreach (var field in fields)
{
var paletteReference = field.GetCustomAttributes<PaletteReferenceAttribute>(true).FirstOrDefault();
var paletteReference = Utility.GetCustomAttributes<PaletteReferenceAttribute>(field, true).FirstOrDefault();
if (paletteReference == null)
continue;
@@ -82,10 +82,10 @@ namespace OpenRA.Mods.Common.Lint
if (projectileInfo == null)
continue;
var fields = projectileInfo.GetType().GetFields();
var fields = Utility.GetFields(projectileInfo.GetType());
foreach (var field in fields)
{
var paletteReference = field.GetCustomAttributes<PaletteReferenceAttribute>(true).FirstOrDefault();
var paletteReference = Utility.GetCustomAttributes<PaletteReferenceAttribute>(field, true).FirstOrDefault();
if (paletteReference == null)
continue;
@@ -126,10 +126,10 @@ namespace OpenRA.Mods.Common.Lint
var tilesetPalettes = new List<(string Tileset, string PaletteName)>();
foreach (var traitInfo in worldActorInfo.TraitInfos<TraitInfo>())
{
var fields = traitInfo.GetType().GetFields();
var fields = Utility.GetFields(traitInfo.GetType());
foreach (var field in fields)
{
var paletteDefinition = field.GetCustomAttributes<PaletteDefinitionAttribute>(true).FirstOrDefault();
var paletteDefinition = Utility.GetCustomAttributes<PaletteDefinitionAttribute>(field, true).FirstOrDefault();
if (paletteDefinition == null)
continue;