Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
 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));
 }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 public abstract Expression Apply(MappingStrategy strategy, ConversionStep conversion);
Exemplo n.º 9
0
 public override Expression Apply(MappingStrategy strategy, ConversionStep conversion)
 {
     strategy.ValueExpression = strategy.SourceExpression;
     return(conversion.BuildConversionExpression(strategy));
 }
Exemplo n.º 10
0
 public override Expression Apply(MappingStrategy strategy, ConversionStep conversion)
 {
     return apply(strategy, conversion);
 }
Exemplo n.º 11
0
 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);
 }
Exemplo n.º 12
0
 public override Expression Apply(MappingStrategy strategy, ConversionStep conversion)
 {
     strategy.ValueExpression = strategy.SourceExpression;
     return conversion.BuildConversionExpression(strategy);
 }
Exemplo n.º 13
0
 public abstract Expression Apply(MappingStrategy strategy, ConversionStep conversion);
Exemplo n.º 14
0
 public override Expression Apply(MappingStrategy strategy, ConversionStep conversion)
 {
     return(apply(strategy, conversion));
 }