private Expression GetReadOnlyMemberPopulation() { var targetMemberAccess = MapperData.GetTargetMemberAccess(); var targetMemberNotNull = targetMemberAccess.GetIsNotDefaultComparison(); return(Expression.IfThen(targetMemberNotNull, _dataSources.BuildValue())); }
public Expression GetFinalValueOrNull() { var finalDataSource = _dataSources.Last(); var finalValue = finalDataSource.Value; if (!finalDataSource.IsFallback) { return(finalValue); } if (finalValue.NodeType == ExpressionType.Coalesce) { // Coalesce between the existing target member value and the fallback: return(((BinaryExpression)finalValue).Right); } var targetMemberAccess = MapperData.GetTargetMemberAccess(); if (ExpressionEvaluation.AreEqual(finalValue, targetMemberAccess)) { return(null); } return(finalValue); }
private Expression GetFallbackValueOrNull() { var finalDataSource = _dataSources.Last(); var fallbackValue = finalDataSource.Value; if (finalDataSource.IsConditional || _dataSources.HasOne()) { return(fallbackValue); } if (fallbackValue.NodeType == ExpressionType.Coalesce) { return(((BinaryExpression)fallbackValue).Right); } var targetMemberAccess = MapperData.GetTargetMemberAccess(); if (ExpressionEvaluation.AreEqual(fallbackValue, targetMemberAccess)) { return(null); } return(fallbackValue); }