コード例 #1
0
ファイル: OptionMap.cs プロジェクト: sflanker/commandline
 public static OptionMap Create(object target, ParserSettings settings)
 {
     var list = ReflectionUtil.RetrievePropertyList<BaseOptionAttribute>(target);
     if (list == null)
     {
         return null;
     }
     var map = new OptionMap(list.Count, settings);
     foreach (var pair in list)
     {
         if (pair.Left != null && pair.Right != null)
         {
             map[pair.Right.UniqueName] = new OptionInfo(pair.Right, pair.Left);
         }
     }
     map.RawOptions = target;
     return map;
 }
コード例 #2
0
 public abstract PresentParserState Parse(IArgumentEnumerator argumentEnumerator, OptionMap map, object options);
コード例 #3
0
ファイル: OptionMap.cs プロジェクト: sflanker/commandline
        public static OptionMap Create(object target,
            IList<Pair<PropertyInfo, VerbOptionAttribute>> verbs, ParserSettings settings)
        {
            var map = new OptionMap(verbs.Count, settings);
            foreach (var verb in verbs)
            {
                var optionInfo = new OptionInfo(verb.Right, verb.Left)
                {
                    HasParameterLessCtor = verb.Left.PropertyType.GetConstructor(Type.EmptyTypes) != null

                };
                if (!optionInfo.HasParameterLessCtor && verb.Left.GetValue(target, null) == null)
                {
                    throw new ParserException("Type {0} must have a parameterless constructor or" +
                        " be already initialized to be used as a verb command.".FormatInvariant(verb.Left.PropertyType));
                }
                map[verb.Right.UniqueName] = optionInfo;
            }
            map.RawOptions = target;
            return map;
        }