var person = new Person { Name = "John", Age = 30 }; var propertyInfo = typeof(Person).GetProperty("Name"); var propertyExpression = Expression.Property(Expression.Constant(person), propertyInfo); var lambdaExpression = Expression.Lambda>(propertyExpression); var getter = lambdaExpression.Compile(); var name = getter(); // Returns "John"
var person = new Person { Name = "John", Age = 30 }; var propertyInfo = typeof(Person).GetProperty("Age"); var valueExpression = Expression.Constant(25); var targetExpression = Expression.Constant(person); var propertyExpression = Expression.Property(targetExpression, propertyInfo); var assignExpression = Expression.Assign(propertyExpression, valueExpression); var lambdaExpression = Expression.LambdaIn this example, we create a lambda expression that sets the value of the "Age" property of a Person object. The lambda expression is compiled to a delegate and called to set the property value. These examples use the System.Linq.Expressions namespace, which is part of the .NET standard library.(assignExpression); var setter = lambdaExpression.Compile(); setter(); // Sets the Age property to 25