Getting the object out of a MemberExpression?

前端 未结 5 1837
野性不改
野性不改 2020-11-30 23:33

So, lets say I have the following expression in C#:

Expression> expr = () => foo.Bar;

How do I pull out a refer

5条回答
  •  Happy的楠姐
    2020-12-01 00:08

    This is what I use in unit tests:

     internal static INotifyPropertyChanged SubModel < T, TProperty > (T model, Expression < Func < T, TProperty >> pickProperty) where T: INotifyPropertyChanged {
       MemberExpression memberExpression = (MemberExpression) pickProperty.Body;
       ParameterExpression parameterExpression = pickProperty.Parameters[0];
       Expression mem = memberExpression.Expression;
       var delegateType = typeof(Func < , > ).MakeGenericType(typeof(T), mem.Type);
       LambdaExpression lambdaExpression = Expression.Lambda(delegateType, mem, parameterExpression);
       object subModel = lambdaExpression.Compile().DynamicInvoke(model);
       return subModel as INotifyPropertyChanged ? ? model;
      }
    

提交回复
热议问题