public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { if (nullableProperties == null) { var value = sourcePropertyChain.Aggregate<PropertyInfo, Expression>(strategy.SourceExpression, Expression.Property); return SetValue(strategy, conversion, value); } return BuildBody(Expression.Property(strategy.SourceExpression, sourcePropertyChain[0]), 0, strategy, conversion); }
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { if (nullableProperties == null) { var value = sourcePropertyChain.Aggregate <PropertyInfo, Expression>(strategy.SourceExpression, Expression.Property); return(SetValue(strategy, conversion, value)); } return(BuildBody(Expression.Property(strategy.SourceExpression, sourcePropertyChain[0]), 0, strategy, conversion)); }
Expression SetValue(MappingStrategy strategy, ConversionStep conversion, Expression value) { strategy.ValueExpression = value; if (conversion != null) { var convert = conversion.BuildConversionExpression(strategy); strategy.ValueExpression = convert; } return(BuildSetTargetValueExpression(strategy)); }
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { var get = Expression.Property(strategy.SourceExpression, sourceProperty); strategy.ValueExpression = get; if (conversion != null) { var convert = conversion.BuildConversionExpression(strategy); strategy.ValueExpression = convert; } return(strategy.ValueExpression); }
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { var get = Expression.Property(strategy.SourceExpression, sourceProperty); strategy.ValueExpression = get; if (conversion != null) { var convert = conversion.BuildConversionExpression(strategy); strategy.ValueExpression = convert; } var property = Expression.Property(strategy.TargetExpression, targetProperty); return Expression.Assign(property, strategy.ValueExpression); }
Expression BuildBody(Expression owner, int index, MappingStrategy strategy, ConversionStep conversion) { if (index == sourcePropertyChain.Length - 1) { return SetValue(strategy, conversion, owner); } if (nullableProperties.Contains(sourcePropertyChain[index]) == false) { return BuildBody(Expression.Property(owner, sourcePropertyChain[index + 1]), index + 1, strategy, conversion); } var local = Expression.Variable(owner.Type); var property = new PropertyIfNotNullInnerExpression(Expression.Property(local, sourcePropertyChain[index + 1])); var body = BuildBody(property, index + 1, strategy, conversion); var expression = new PropertyIfNotNullExpression(owner, body, local, TargetValueType); property.Owner = expression; return expression; }
Expression BuildBody(Expression owner, int index, MappingStrategy strategy, ConversionStep conversion) { if (index == sourcePropertyChain.Length - 1) { return(SetValue(strategy, conversion, owner)); } if (nullableProperties.Contains(sourcePropertyChain[index]) == false) { return(BuildBody(Expression.Property(owner, sourcePropertyChain[index + 1]), index + 1, strategy, conversion)); } var local = Expression.Variable(owner.Type); var property = new PropertyIfNotNullInnerExpression(Expression.Property(local, sourcePropertyChain[index + 1])); var body = BuildBody(property, index + 1, strategy, conversion); var expression = new PropertyIfNotNullExpression(owner, body, local, TargetValueType); property.Owner = expression; return(expression); }
public abstract Expression Apply(MappingStrategy strategy, ConversionStep conversion);
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { strategy.ValueExpression = strategy.SourceExpression; return(conversion.BuildConversionExpression(strategy)); }
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { return apply(strategy, conversion); }
Expression SetValue(MappingStrategy strategy, ConversionStep conversion, Expression value) { strategy.ValueExpression = value; if (conversion != null) { var convert = conversion.BuildConversionExpression(strategy); strategy.ValueExpression = convert; } return BuildSetTargetValueExpression(strategy); }
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { strategy.ValueExpression = strategy.SourceExpression; return conversion.BuildConversionExpression(strategy); }
public abstract Expression Apply(MappingStrategy strategy, ConversionStep conversion);
public override Expression Apply(MappingStrategy strategy, ConversionStep conversion) { return(apply(strategy, conversion)); }