using System;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
public class Test
{
public void Delete<T>(T obj) where T : class {}
public void Delete<T>(ICollection<T> obj) where T : class {}
public static MethodInfo GetMethod(Type type) {
var res = type
.GetRuntimeMethods()
.Where(x => x.Name.Equals("Select"))
.Select(m => new {Method = m, Parameters = m.GetParameters()})
.FirstOrDefault();
return res != null ? res.Method : null;
}
public static void Main()
{
Console.WriteLine(GetMethod(typeof(Test)));
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlJlZmxlY3Rpb247CnVzaW5nIFN5c3RlbS5MaW5xOwoKcHVibGljIGNsYXNzIFRlc3QKewoJCglwdWJsaWMgdm9pZCBEZWxldGU8VD4oVCBvYmopIHdoZXJlIFQgOiBjbGFzcyB7fQogICAgcHVibGljIHZvaWQgRGVsZXRlPFQ+KElDb2xsZWN0aW9uPFQ+IG9iaikgd2hlcmUgVCA6IGNsYXNzIHt9CgkKCXB1YmxpYyBzdGF0aWMgTWV0aG9kSW5mbyBHZXRNZXRob2QoVHlwZSB0eXBlKSB7CiAgICAgICAgdmFyIHJlcyA9IHR5cGUKICAgICAgICAgICAgLkdldFJ1bnRpbWVNZXRob2RzKCkKICAgICAgICAgICAgLldoZXJlKHggPT4geC5OYW1lLkVxdWFscygiU2VsZWN0IikpCiAgICAgICAgICAgIC5TZWxlY3QobSA9PiBuZXcge01ldGhvZCA9IG0sIFBhcmFtZXRlcnMgPSBtLkdldFBhcmFtZXRlcnMoKX0pCiAgICAgICAgICAgIC5GaXJzdE9yRGVmYXVsdCgpOwogICAgICAgIHJldHVybiByZXMgIT0gbnVsbCA/IHJlcy5NZXRob2QgOiBudWxsOwogICAgfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJQ29uc29sZS5Xcml0ZUxpbmUoR2V0TWV0aG9kKHR5cGVvZihUZXN0KSkpOwoJfQp9