static Parser <Expression> StaticInvocationExpression(StaticAccess staticMember) { return(from o in Token(Char('(')) from arguments in ArgumentList() from c in Token(Char(')')) let identifier = staticMember.Identifier.Value select Expression.Call(staticMember.Type, identifier.Name, identifier.TypeArguments, arguments.ToArray())); }
static Parser <Expression> StaticMemberAccessExpression(StaticAccess staticMember) { var identifier = staticMember.Identifier.Value; var propertyOrField = staticMember.Type.GetMember(identifier.Name, BindingFlags.Static | BindingFlags.Public | BindingFlags.FlattenHierarchy); if (propertyOrField.Length == 0) { throw new ArgumentException("The specified member name was not found.", "propertyOrFieldName"); } if (propertyOrField.Length > 1) { throw new ArgumentException("The specified member name is ambiguous.", "propertyOrFieldName"); } return(Return(Expression.MakeMemberAccess(null, propertyOrField[0]))); }