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

@@ -173,7 +173,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
foreach (var t in globalTables)
{
var name = t.GetCustomAttributes<ScriptGlobalAttribute>(true).First().Name;
var name = Utility.GetCustomAttributes<ScriptGlobalAttribute>(t, true).First().Name;
Console.WriteLine("---Global variable provided by the game scripting engine.");
foreach (var obsolete in t.GetCustomAttributes(false).OfType<ObsoleteAttribute>())
@@ -191,9 +191,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
var body = "";
if (member.HasAttribute<DescAttribute>())
if (Utility.HasAttribute<DescAttribute>(member))
{
var lines = member.GetCustomAttributes<DescAttribute>(true).First().Lines;
var lines = Utility.GetCustomAttributes<DescAttribute>(member, true).First().Lines;
foreach (var line in lines)
Console.WriteLine($" --- {line}");
}
@@ -258,11 +258,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
Console.WriteLine();
var isActivity = memberInfo.HasAttribute<ScriptActorPropertyActivityAttribute>();
var isActivity = Utility.HasAttribute<ScriptActorPropertyActivityAttribute>(memberInfo);
if (memberInfo.HasAttribute<DescAttribute>())
if (Utility.HasAttribute<DescAttribute>(memberInfo))
{
var lines = memberInfo.GetCustomAttributes<DescAttribute>(true).First().Lines;
var lines = Utility.GetCustomAttributes<DescAttribute>(memberInfo, true).First().Lines;
foreach (var line in lines)
Console.WriteLine($" --- {line}");
}