/// <summary>
        /// Returns the name of the property referenced by the expression
        /// </summary>
        /// <param name="expression"></param>
        /// <returns></returns>
        public static string AsPropertyName(this LambdaExpression expression)
        {
            PropertyInfo info         = expression.AsPropertyInfo();
            string       propertyName = info == null ? null : info.Name;

            return(propertyName);
        }
Example #2
0
 /// <summary>
 /// Constructor with source object and target accessor
 /// </summary>
 /// <param name="source">Source object</param>
 /// <param name="targetExpression">Target accessor</param>
 public PropertyMapping(TSource source, LambdaExpression targetExpression)
 {
     Source             = source;
     TargetPropertyInfo = targetExpression.AsPropertyInfo();
     if (targetExpression.Body.NodeType == ExpressionType.MemberAccess)
     {
         var memberExpression = targetExpression.Body as MemberExpression;
         //for mappings with nested properties, e.g.
         //  t => t.Address.Line1
         //if the preceeding expression is a parameter, then this is not
         //a nested expression, so we can use the ParameterInfo directly
         //otherwise we need to execute the func to get to the object
         //to set the value of:
         if (memberExpression.Expression.NodeType != ExpressionType.Parameter)
         {
             var parameter = memberExpression.Expression.GetParameterExpression();
             if (parameter != null)
             {
                 _targetExpression = Expression.Lambda(memberExpression.Expression, parameter);
             }
         }
     }
 }