How set value a property selector Expression>

前端 未结 6 676
野趣味
野趣味 2020-11-30 04:32

i need associate a entity property Address in my Person class entity with expressions linq in my FactoryEntities class using pattern factory idea, look this is what I have a

6条回答
  •  庸人自扰
    2020-11-30 05:21

    Another solution is to get property owner ant invoke property setter using reflection. The advantage of this solution that it does not use extension methods and can be call with any type

    private void SetPropertyValue(Expression> lambda, object value)
    {
        var memberExpression = (MemberExpression)lambda.Body;
        var propertyInfo = (PropertyInfo)memberExpression.Member;
        var propertyOwnerExpression = (MemberExpression)memberExpression.Expression;
        var propertyOwner = Expression.Lambda(propertyOwnerExpression).Compile().DynamicInvoke();
    
        propertyInfo.SetValue(propertyOwner, value, null);            
    }
    ...
    SetPropertyValue(s => myStuff.MyPropy, newValue);
    

提交回复
热议问题