This is the most difficult type of player to face for non-professional players (these days, this type of player is practically extinct on the professional tour, because it's too easliy defeated by accurate, controlled aggression)...unless you're one of these players, of course!
The first thing you have to do is be willing to be patient. That doesn't mean playing 'his/her' type of game all day, but you have to be more patient than usual to avoid making errors too early in the point.
With that mindset (i.e., 'I KNOW I'll have to play at least 8 or 10 balls before I can attack...'), you can try to move the ball around to see which side is weaker. You can then concentrate on attacking that side. But even if both sides are equally good, you'll have to wait until you get a slightly shorter ball from the person and be ready to attack with an approach shot or really solid groundstroke to the opposite side of the court from where the person is.
That's the tough part, because you have to be patient and accurate enough to both play that type of game AND be accurate in your attack once you get the chance.
So, you have to have a solid overhead smash, approach shots, and decent volleys to put this sort of person away. You'll probably have to hit more than one smash every time you try to be aggressive, as this type of player is usually very good at running down balls and throwing up high lobs. A few good smashes to the opposite corners will end the point for you, but obviously only if you don't make errors (the lobs will probably be pretty deep, so your smashes have to be accurate).
The best thing to do is practice your smashes and attacking groundstrokes down the line and crosscourt, and remember to be patient when you get this type of opponent...