Exemple #1
0
        internal CommandParameterInfo LookupParameter(string name)
        {
            // check for complete name first
            if (ParameterInfoLookupTable.ContainsKey(name))
            {
                return(ParameterInfoLookupTable[name]);
            }

            // if we didn't find it by name or alias, try to find it by prefix
            var candidates = (from key in ParameterInfoLookupTable.Keys
                              where key.StartsWith(name, StringComparison.OrdinalIgnoreCase)
                              select key).ToList();

            if (candidates.Count < 1)
            {
                var msg = String.Format("No parameter was found that matches the name or alias '{0}'.", name);
                throw new ParameterBindingException(msg, "ParameterNotFound");
            }
            if (candidates.Count > 1)
            {
                var msg = String.Format("Supplied parmameter '{0}' is ambiguous, possibilities are: {1}",
                                        name, String.Join(", ", candidates));
                throw new ParameterBindingException(msg, "AmbiguousParameter");
            }

            return(ParameterInfoLookupTable[candidates[0]]);
        }
Exemple #2
0
        private void RegisterParameter(CommandParameterInfo parameterInfo)
        {
            // also add it to lookuptable and check for unuque names/aliases
            var allNames = parameterInfo.Aliases.ToList();

            allNames.Add(parameterInfo.Name);
            foreach (var curName in allNames)
            {
                if (ParameterInfoLookupTable.ContainsKey(curName))
                {
                    // save exception to be thrown when this object is validated, not now
                    var msg = String.Format("The name or alias '{0}' is used multiple times.", curName);
                    _validationException = new MetadataException(msg);
                    continue;
                }
                ParameterInfoLookupTable[curName] = parameterInfo;
            }
        }