An awesome new article from Eric Gunnerson showed up on MSDN this week that focuses on the cost of calling code dynamically. Eric compares the speeds between direct call, using Type.InvokeMember(), calling through an interface, & calling via a delegate. It should be no surprise that Type.InvokeMember() lost out to the others by a long shot. That's not to say you shouldn't use Type.InvokeMember, it has some great uses - but you should know what you're getting yourself into.
[Calling Code Dynamically]