How to get components of a Tuple in C#?
<p>If I have a <code>Tuple&lt;int, double&gt;</code> declared, I would like to get the following.</p>

<ol>
<li><p>An object, I would imagine that this is a type object, that I can perform comparison on, to the effect of <code>obj == typeof(Tuple&lt;&gt;)</code> and it would return <code>true</code>.</p></li>
<li><p>An array of Type objects, which is equivalent to <code>new[]{typeof(int), typeof(double)}</code>. This I can figure out with reflection, since the tuple object exposes it's items as Properties, but then I don't know the order of these properties and the MSDN article says I can't rely on observation...</p></li>
</ol>

<p>I need this in order to make a special case for a generic method, which should do something special if it's passed a tuple. Like so:</p>

<pre><code>void foo&lt;T&gt;(...){
    if(T == Tuple&lt;Q, S, ...&gt;){
     //special code that needs to know what Q and S and ... are.
    }
}
</code></pre>

<p>Thanks in advance.</p>
