private Expression CreateConstructorParameterExpression(ConstructorParameterMap ctorParamMap) { var resolvedExpression = ResolveSource(ctorParamMap); var resolvedValue = Variable(resolvedExpression.Type, "resolvedValue"); return(Block(new[] { resolvedValue }, Assign(resolvedValue, resolvedExpression), MapExpression(_configurationProvider, _typeMap.Profile, new TypePair(resolvedExpression.Type, ctorParamMap.DestinationType), resolvedValue, Context))); }
private Expression ResolveSource(ConstructorParameterMap ctorParamMap) { if (ctorParamMap.CustomExpression != null) { return(ctorParamMap.CustomExpression.ConvertReplaceParameters(Source) .NullCheck(ctorParamMap.DestinationType)); } if (ctorParamMap.CustomValueResolver != null) { return(ctorParamMap.CustomValueResolver.ConvertReplaceParameters(Source, Context)); } if (ctorParamMap.Parameter.IsOptional) { ctorParamMap.DefaultValue = true; return(Constant(ctorParamMap.Parameter.GetDefaultValue(), ctorParamMap.Parameter.ParameterType)); } return(Chain(ctorParamMap.SourceMembers, ctorParamMap.DestinationType)); }
private Expression ResolveSource(ConstructorParameterMap ctorParamMap) { if (ctorParamMap.CustomExpression != null) { return(ctorParamMap.CustomExpression.ConvertReplaceParameters(Source) .IfNotNull(ctorParamMap.DestinationType)); } if (ctorParamMap.CustomValueResolver != null) { return(ctorParamMap.CustomValueResolver.ConvertReplaceParameters(Source, Context)); } if (ctorParamMap.Parameter.IsOptional) { ctorParamMap.DefaultValue = true; return(Constant(ctorParamMap.Parameter.GetDefaultValue(), ctorParamMap.Parameter.ParameterType)); } return(ctorParamMap.SourceMembers.Aggregate( (Expression)Source, (inner, getter) => getter is MethodInfo ? Call(getter.IsStatic() ? null : inner, (MethodInfo)getter) : (Expression)MakeMemberAccess(getter.IsStatic() ? null : inner, getter) ) .IfNotNull(ctorParamMap.DestinationType)); }
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) => ExpressionResolutionResult(expressionResolutionResult, propertyMap.SourceMembers);
public bool CanGetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) { throw new NotImplementedException(); }
public bool CanGetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) { return false; }
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) { return ExpressionResolutionResult(expressionResolutionResult, null); }
public bool CanGetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) => false;
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap, IValueResolver valueResolver) { throw new NotImplementedException(); }
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap, IValueResolver valueResolver) { return(ExpressionResolutionResult(expressionResolutionResult, null)); }
public bool CanGetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) { return propertyMap.SourceMembers.Any(); }
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) { return ExpressionResolutionResult(expressionResolutionResult, propertyMap.SourceMembers); }
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap, IValueResolver valueResolver) { return ExpressionResolutionResult(expressionResolutionResult, valueResolver); }
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) { throw new NotImplementedException(); }
public bool CanGetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) => propertyMap.SourceMembers.Any();
public ExpressionResolutionResult GetExpressionResolutionResult(ExpressionResolutionResult expressionResolutionResult, ConstructorParameterMap propertyMap) => ExpressionResolutionResult(expressionResolutionResult, null);
public ConstructorParameterMap(ConstructorParameterMap parameterMap, IncludedMember includedMember) : this(includedMember.TypeMap, parameterMap.Parameter, parameterMap._sourceMembers, parameterMap.CanResolveValue) =>