using System.Diagnostics;
using System.Linq.Expressions;
static MethodInfo GetSetterForX(Expression<Func<double>> expression)
var body = expression.Body;
var operand = body as MemberExpression;
var propertyInfo = (PropertyInfo)(operand.Member);
var setter = propertyInfo.GetSetMethod(true);
public static void Main()
var testObject = new TestObject();
var setter = GetSetterForX(() => testObject.X);
setter.Invoke(testObject, new object[]{5});
bool res = testObject.X == 5;