using System.Collections.Generic;
using System.Linq.Expressions;
public static void Main()
user.Department = new Department();
user.Department.Name = "hello";
Console.WriteLine("Before: " + user.Department.Name);
ParameterExpression paramExpr = Expression.Parameter(typeof(User), "user");
MemberExpression depPropExpr = MemberExpression.Property(paramExpr, "Department");
MemberExpression depNamePropExpr = MemberExpression.Property(depPropExpr, "Name");
ConstantExpression constantExpression = Expression.Constant("SBCA");
var expression = Expression.Assign(depNamePropExpr, constantExpression);
var compiledExpression = Expression.Lambda<Action<User>>(expression, new[] { paramExpr }).Compile();
compiledExpression(user);
Console.WriteLine("After: " + user.Department.Name);
public Department Department { get; set; }
public string Name { get; set; }