Stashbox by Peter Csajtai

<PackageReference Include="Stashbox" Version="3.6.3" />

 InjectionParameterExtensions

using Stashbox.Utils; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; namespace Stashbox.Resolution.Extensions { internal static class InjectionParameterExtensions { public static Expression SelectInjectionParameterOrDefault(this IEnumerable<KeyValuePair<string, object>> injectionParameters, TypeInformation typeInformation) { string memberName = typeInformation.ParameterOrMemberName; KeyValuePair<string, object> keyValuePair = injectionParameters.FirstOrDefault((KeyValuePair<string, object> param) => param.Key == memberName); if (keyValuePair.Equals(default(KeyValuePair<string, object>))) return null; if (keyValuePair.Value == null) { if ((object)typeInformation.Type != Constants.ObjectType) return keyValuePair.Value.AsConstant().ConvertTo(typeInformation.Type); return keyValuePair.Value.AsConstant(); } if ((object)keyValuePair.Value.GetType() != typeInformation.Type) return keyValuePair.Value.AsConstant().ConvertTo(typeInformation.Type); return keyValuePair.Value.AsConstant(); } } }