Ejemplo n.º 1
0
        private void CheckUnknownParametersAreNotPassed(MethodInfo method)
        {
            var parameterNames = new List <string>();

            foreach (ParameterInfo parameter in method.GetParameters())
            {
                if (_metadata.IsRequired(parameter))
                {
                    continue;
                }
                parameterNames.Add(parameter.Name.ToLower());
                var optional = _metadata.GetOptional(parameter);
                foreach (string altName in optional.AltNames)
                {
                    parameterNames.Add(altName.ToLower());
                }
            }
            foreach (var optionalParameter in OptionalParameters(method))
            {
                string name = ParameterName(optionalParameter);
                if (!parameterNames.Contains(name.ToLower()))
                {
                    throw new NConsolerException("Unknown parameter name {0}", optionalParameter);
                }
            }
        }
Ejemplo n.º 2
0
 private void CheckOptionalParametersDefaultValuesAreAssignableToRealParameterTypes(MethodBase method)
 {
     foreach (ParameterInfo parameter in method.GetParameters())
     {
         if (_metadata.IsRequired(parameter))
         {
             continue;
         }
         var optional = _metadata.GetOptional(parameter);
         if (optional.Default != null && optional.Default.GetType() == typeof(string) &&
             StringToObject.CanBeConvertedToDate(optional.Default.ToString()))
         {
             return;
         }
         if ((optional.Default == null && !parameter.ParameterType.CanBeNull()) ||
             (optional.Default != null && !optional.Default.GetType().IsAssignableFrom(parameter.ParameterType)))
         {
             throw new NConsolerException(
                       "Default value for an optional parameter \"{0}\" in method \"{1}\" can not be assigned to the parameter",
                       parameter.Name, method.Name);
         }
     }
 }