static MethodInfo MethodHasAppropriateOverload(MethodInfo method, MethodInfo[] methodsOrdered) { var parameters = method.GetParametersOrdered(); var name = method.Name; return methodsOrdered .Where(x => x.Name == name) .FirstOrDefault(x => MethodHasOverloadForApiOptions(x, parameters)); }
private static void CheckParameters(MethodInfo mainMethod, MethodInfo observableMethod) { var mainParameters = mainMethod.GetParametersOrdered(); var observableParameters = observableMethod.GetParametersOrdered(); if (mainParameters.Length != observableParameters.Length) { throw new ParameterCountMismatchException(observableMethod, mainParameters, observableParameters); } int index = 0; foreach(var mainParameter in mainParameters) { var observableParameter = observableParameters[index]; if (mainParameter.Name != observableParameter.Name) { throw new ParameterMismatchException(observableMethod, index, mainParameter, observableParameter); } var mainType = mainParameter.ParameterType; var expectedType = GetObservableExpectedType(mainType); if (expectedType != observableParameter.ParameterType) { throw new ParameterMismatchException(observableMethod, index, mainParameter, observableParameter); } index++; } }