public static ExtraMemberCallDetails GetDefaultSetterDetails(MemberInfo member, Expression destination, ParameterExpression value) { ExtraMemberCallTypeEnum callType = GetCallType(ExtraMemberCallDirectionEnum.Set, member); object[] index = new object[0]; Expression indexExp = Expression.Constant(index); // Value types cannot be implicitly converted to object, // we need to box the value if it's a valueType. Expression rVal; if (member.GetMemberType().IsValueType()) { rVal = Expression.Convert(value, typeof(object)); } else { rVal = value; } Expression[] parameters = new Expression[4] { Expression.Constant(member), destination, rVal, indexExp }; return(new ExtraMemberCallDetails(ExtraMemberCallDirectionEnum.Set, callType, parameters)); }
public ExtraMemberCallDetails(ExtraMemberCallDirectionEnum callDirection, ExtraMemberCallTypeEnum callType, Expression[] parameters) { CallDirection = callDirection; CallType = callType; Parameters = parameters; }
public static ExtraMemberCallDetails GetDefaultGetterDetails(MemberInfo member, Expression destination) { ExtraMemberCallTypeEnum callType = GetCallType(ExtraMemberCallDirectionEnum.Get, member); object[] index = new object[0]; Expression indexExp = Expression.Constant(index); Expression[] parameters = new Expression[3] { Expression.Constant(member), destination, indexExp }; return(new ExtraMemberCallDetails(ExtraMemberCallDirectionEnum.Get, callType, parameters)); }