Esempio n. 1
0
 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++;
            }
        }