Did you know that you can call a generic method with out supplying the type argument.  The C# compiler will fill in the type parameter for you at compile time since the language is strongly typed.


static void MyMethod<S>(S myParam)
{
    Console.WriteLine(typeof(S).ToString());
    Console.WriteLine(myParam.GetType().ToString());
}
static void Main(string[] args) {

int a1 = 5;

object a2 = 5;
MyMethod(a1); MyMethod(a2);
} /* //Outputs: System.Int32 System.Int32 System.Object System.Int32 */