Cast object into appropriate type for overloaded methods
===

Say I have a method that is overloaded such as `void PrintInfo(Person)` and `void PrintInfo(Item)`, and so on. I try to invoke these methods by passing in an Object. 

I'm wondering why it is giving me an error when I do this; aren't all classes inherited from Object? I want to avoid doing an if/switch statement where I check which type the Object is before calling the appropriate method.

What do you guys think is the best approach in this case?