internal static Expression ReduceMemberBinding(ParameterExpression objVar, MemberBinding binding)
{
MemberExpression member = Expression.MakeMemberAccess(objVar, binding.Member);
switch (binding.BindingType)
{
case MemberBindingType.Assignment:
return Expression.Assign(member, ((MemberAssignment)binding).Expression);
case MemberBindingType.ListBinding:
return ReduceListInit(member, ((MemberListBinding)binding).Initializers, keepOnStack: false);
case MemberBindingType.MemberBinding:
return ReduceMemberInit(member, ((MemberMemberBinding)binding).Bindings, keepOnStack: false);
default: throw ContractUtils.Unreachable;
}
}