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();
}
}
}