public static void Main(string[] args)
    {
        Type       ty   = Type.GetType("P");
        MethodInfo mfst = ty.GetMethod("fst");
//    DumpMethod(mfst);
        MethodInfo mfstsi = mfst.BindGenericParameters(new Type[] { typeof(string), typeof(int) });

        DumpMethod(mfstsi);
        Console.WriteLine(mfstsi.Invoke(null, new object[] { "My string", (object)57 }));
        MethodInfo mfstls = mfst.BindGenericParameters(new Type[] { typeof(long), typeof(string) });

        DumpMethod(mfstls);
        Console.WriteLine(mfstls.Invoke(null, new object[] { (object)12345678987654321L, "My string" }));
    }