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)
static void Main(string[] args) {

int a1 = 5;

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