public TQuantity ParseExact(string text, string format, IFormatProvider formatProvider)
        {
            if (!TryExtractParts(text, format, formatProvider, out string valueStr, out string valueFormat, out string unitStr, out string unitFormat))
            {
                throw Error.IncorrectFormat($"'{text}' is not a correct {typeof(TQuantity)}.");
            }

            var value = _valueParser.ParseExact(valueStr, valueFormat, formatProvider);
            var unit  = _unitParser.ParseExact(unitStr, unitFormat, formatProvider);

            return(_quantityFactory.Create(value, unit));
        }
Пример #2
0
        public TQuantity Parse(string text)
        {
            if (!TryExtractParts(text, out var valueStr, out var unitStr))
            {
                throw Error.IncorrectFormat(text, GetFormatName());
            }

            if (!_valueParser.TryParse(valueStr, out var value))
            {
                throw Error.IncorrectFormat(valueStr, string.Concat(GetFormatName(), " value"));
            }
            if (!_unitParser.TryParse(unitStr, out var unit))
            {
                throw Error.IncorrectFormat(unitStr, string.Concat(GetFormatName(), " unit"));
            }
            return(_quantityFactory.Create(value, unit));
        }