title: C# Reflection - How can I tell if object o is of type KeyValuePair and then cast it?
body: <p>I'm currently trying to write a Dump() method from LinqPad equivalent iin C# for my own amusment. I'm moving from Java to C# and this is an exercise rather than a business requirement. I've got almost everything working except for Dumping a Dictionary.</p>
  
  <p>The problem is that KeyValuePair is a Value type. For most other Value types I simply call the ToString method but this is insufficient as the KeyValuePair may contain Enumerables and other objects with undesirable ToString methods. So I need to work out if it's a KeyValuePair and then cast it. In Java I could use wildcard generics for this but I don't know the equivalent in C#.</p>
  
  <p>Your quest, given an object o, determine if it's a KeyValuePair and call Print on its key and value.</p>
  
  <pre><code>Print(object o) {
     ...
  }
  </code></pre>
  
  <p>Thanks!</p>