示例#1
0
        public void Verify(IEnumerable <ParsingTypeInfo> types, IConvertersFactory convertersFactory)
        {
            if (types.Where(x => !(x is ParsingCommandTypeInfo)).Count() > 1)
            {
                throw new InvalidOperationException("You can register only one non-command type");
            }

            if (types.SelectMany(x => x.Options.OfType <ParsingArgumentInfo>().Concat(x.Values).Select(p => p.ChooseConverter(convertersFactory) == null)).Any())
            {
                throw new InvalidOperationException($"No converter is specified for a type.");
            }
        }
示例#2
0
 public ObjectBuilder(ParsingTypeInfo typeInfo, IConvertersFactory convertersFactory, IFormatProvider formatProvider)
 {
     this.typeInfo          = typeInfo ?? throw new ArgumentNullException(nameof(typeInfo));
     this.convertersFactory = convertersFactory ?? throw new ArgumentNullException(nameof(convertersFactory));
     this.formatProvider    = formatProvider ?? throw new ArgumentNullException(nameof(formatProvider));
     objectResult           = typeInfo.Factory.DynamicInvoke();
     maxValuesNumber        = typeInfo.Values.Count();
     if (typeInfo.Values.Last().IsCollection)
     {
         maxValuesNumber += typeInfo.Values.Last().Maximum - 1;
     }
 }
示例#3
0
 public CollectionConvertersFactory(IConvertersFactory convertersFactory)
 {
     this.convertersFactory = convertersFactory ?? throw new ArgumentNullException(nameof(convertersFactory));
 }
示例#4
0
 public TokensParserFactory(IEnumerable <ParsingTypeInfo> registeredTypes, IConvertersFactory convertersFactory, IFormatProvider formatProvider)
 {
     this.registeredTypes   = registeredTypes ?? throw new ArgumentNullException(nameof(registeredTypes));
     this.convertersFactory = convertersFactory ?? throw new ArgumentNullException(nameof(convertersFactory));
     this.formatProvider    = formatProvider ?? throw new ArgumentNullException(nameof(formatProvider));
 }