From b29ae4c8c8b093e6639292ce032e0429edfd908a Mon Sep 17 00:00:00 2001 From: Chris Cameron Date: Fri, 27 Mar 2020 14:50:02 -0400 Subject: [PATCH] perf: Potential optimization when searching for Constructors/Methods --- ICD.Common.Utils/ReflectionUtils.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ICD.Common.Utils/ReflectionUtils.cs b/ICD.Common.Utils/ReflectionUtils.cs index cbdda24..2f189ef 100644 --- a/ICD.Common.Utils/ReflectionUtils.cs +++ b/ICD.Common.Utils/ReflectionUtils.cs @@ -51,7 +51,15 @@ namespace ICD.Common.Utils if (parameters == null) throw new ArgumentNullException("parameters"); - IEnumerable parameterTypes = method.GetParameters().Select(p => (Type)p.ParameterType); + ParameterInfo[] methodParameters = method.GetParameters(); + + // Bail early if the counts don't match + ICollection parametersCollection = parameters as ICollection; + if (parametersCollection != null && parametersCollection.Count != methodParameters.Length) + return false; + + // Compare the parameters to the objects + IEnumerable parameterTypes = methodParameters.Select(p => (Type)p.ParameterType); return ParametersMatchTypes(parameterTypes, parameters); }