I just had a dilemma today that called for a solution better than using if or case statements. After some thought, probably too much thought (my excuse is I'm tired), I determined that the Visitor pattern could do a much better job without being a maintenance nightmare.
The following article contains more information: http://geekswithblogs.net/tonyt/articles/70275.aspx