public static MemberInfo TryGet(this ICollection<MemberInfo> source, MemberInfo memberInfo) { if (source.IsOverloaded(memberInfo.Name)) { return source.SingleOrDefault(m => m.Name == memberInfo.Name && MatchParameter(m, memberInfo)); } return source.Get(memberInfo.Name); }
private static bool MatchParameter(MemberInfo current, MemberInfo previous) { if (current.Parameters.Count() != previous.Parameters.Count()) { return false; } for (int i = 0; i < current.Parameters.Count(); i++) { if (current.Parameters[i].Type != previous.Parameters[i].Type) { return false; } } return true; }