using System.Linq.Expressions;
public static void Main(string[] args)
Target target = new Target();
Source source = new Source()
NestedField = new NestedSource()
var action = Map<Source, Target>(p => p.NestedField.Dummy, x => x.TargetName);
Console.WriteLine(target.TargetName);
public static Action<TSource, TTarget> Map<TSource, TTarget>(Expression<Func<TSource, object>> getter, Expression<Func<TTarget, object>> setter)
var sourceField = getter.Body as MemberExpression;
var targetField = setter.Body as MemberExpression;
var assign = Expression.Assign(targetField, sourceField);
var lambda = Expression.Lambda<Action<TSource, TTarget>>(assign, getter.Parameters[0], setter.Parameters[0]);
public string TargetName { get; set; }
public class NestedSource
public string Dummy { get; set; }
public NestedSource NestedField { get; set; }