protected override void SetRawValue(string?rawValue) { _rawValue = rawValue; _values.Clear(); var managedValues = GetManagedValues().ToList(); var position = 0; var managedValuesInfo = new List <ManagedValueInfo>(); foreach (var managedValue in managedValues) { managedValuesInfo.Add(new ManagedValueInfo { Value = managedValue, Parsed = false }); managedValue.Reset(); managedValue.ActualPosition = position++; } _values.AddRange(managedValues); if (rawValue == null) { return; } foreach (var parsedValue in HeaderValuesParser.ParseStatic(rawValue, ValuesDelimiter)) { Value?value = null; foreach (var managedValueInfo in managedValuesInfo) { if (!managedValueInfo.Parsed && managedValueInfo.Value.Parse(parsedValue.Interpreted, parsedValue.Raw)) { managedValueInfo.Parsed = true; value = managedValueInfo.Value; break; } } if (value == null) { value = new UnmanagedValue(parsedValue.Raw); _values.Add(value); } value.ActualPosition = position++; } }
protected override void SetRawValue(string?rawValue) { _rawValue = rawValue; _valueCollection.Clear(); IsDirty = false; // NOTE: important to set after Clear(), because as Clear() sets IsDirty as true if (rawValue == null) { return; } foreach (var interpreted in HeaderValuesParser.ParseInterpretedStatic(rawValue, HttpConst.DefaultHeaderDelimiter)) { _valueCollection.Add(interpreted); } IsDirty = false; }
public HeaderValuesParserTest() { _headerValuesParser = new HeaderValuesParser(); }