上一篇文章写了 Expression 取值,这次写赋值。
示例代码1 :
// 项目A
private class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
//项目B
private static void Setter()
{
//模拟反序列化出来Person类,用object存储
object person = new Person {Age = 11, Name = "qqq"};
}
怎么给person的Age 赋值?
示例代码2 :
private static void SetPropertyValue<T, TValue>(T t, string propertyName, TValue value)
{
var paramExpr = Expression.Parameter(typeof(T), "x");
var valueExpr = Expression.Parameter(typeof(TValue), "v");
var type = t.GetType();
var memberExpression = Expression.Property(Expression.Convert(paramExpr, type!), propertyName);
var memberAssignment = Expression.Assign(memberExpression, Expression.Constant(value));
var act