public void Equals_GenericClass_GenericMethodFromBaseType2() { var methodFromBaseType = ScriptingHelper.GetAnyGenericInstanceMethod(typeof(ProxiedChildGeneric <int, string>), "ProxiedChildGenericToString", 2); var methods = ScriptingHelper.GetAnyGenericInstanceMethodArray(typeof(ProxiedChildChildGeneric <int, string>), "ProxiedChildGenericToString", 2); Assert.That(methods.Length, Is.EqualTo(2)); Console.WriteLine(methods[0].Name); Console.WriteLine(methods[1].Name); Console.WriteLine(methodFromBaseType.Name); Console.WriteLine(methods[0].ReturnType); Console.WriteLine(methods[1].ReturnType); Console.WriteLine(methodFromBaseType.ReturnType); Console.WriteLine(methods[0].Attributes); Console.WriteLine(methods[1].Attributes); Console.WriteLine(methodFromBaseType.Attributes); Console.WriteLine("{" + string.Join(",", methods[0].GetParameters().Select(pi => pi.Attributes)) + "}"); Console.WriteLine("{" + string.Join(",", methods[1].GetParameters().Select(pi => pi.Attributes)) + "}"); Console.WriteLine("{" + string.Join(",", methodFromBaseType.GetParameters().Select(pi => pi.Attributes)) + "}"); Console.WriteLine("{" + string.Join(",", methods[0].GetParameters().Select(pi => pi.ParameterType)) + "}"); Console.WriteLine("{" + string.Join(",", methods[1].GetParameters().Select(pi => pi.ParameterType)) + "}"); Console.WriteLine("{" + string.Join(",", methodFromBaseType.GetParameters().Select(pi => pi.ParameterType)) + "}"); var a0 = methods[0].GetParameters()[2]; var a1 = methods[1].GetParameters()[2]; var ax = methodFromBaseType.GetParameters()[2]; var x = methods[0].GetParameters()[2]; Assert.That(methodFromBaseType, Is.Not.EqualTo(methods[0])); Assert.That(methodFromBaseType, Is.Not.EqualTo(methods[1])); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, methods[1]), Is.True); Assert.That(MethodInfoEqualityComparer.Get.Equals(methodFromBaseType, methods[0]), Is.True); }