public bool TryBind(MethodInfo methodInfo, Type[] realTypes, out MethodInfo bindedMethod) { MethodInfo[] candidates; bool anyResults = TryBind(methodInfo, realTypes, out candidates); if (!anyResults) { bindedMethod = null; } else { if (methodInfo.ContainsGenericParameters) { IEnumerable <MethodInfo> filtered = candidates.Where(x => x.GetGenericArguments() .All(y => y != typeof(object))); // Prefer avoiding object as a generic type. if (filtered.Any()) { candidates = filtered.ToArray(); } } bindedMethod = (MethodInfo)_methodSelector.Select(candidates, realTypes); } return(anyResults); }
public MethodBase Select(MethodBase[] candidates, Type[] realTypes) { try { return(_child.Select(candidates, realTypes)); } catch (AmbiguousMatchException) { return(candidates[0]); } }