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."); } }
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; } }
public CollectionConvertersFactory(IConvertersFactory convertersFactory) { this.convertersFactory = convertersFactory ?? throw new ArgumentNullException(nameof(convertersFactory)); }
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)); }