/// <summary> /// Add a mime param header. /// </summary> /// <param name="header">The header to add.</param> /// <returns>The newly added header.</returns> public MimeHeaderParam Add(MimeHeaderParam header) { if (_headers.Contains(header.Name)) { var err = new MimeException(string.Format(Messages.MimeHeaderParamCollection_Add_HeaderParamWithNameExists, header)); logger.Error(err); throw err; } _listHeaders.Add(header); _headers.Add(header.Name, header); return header; }
/// <summary> /// Add a mime param header at a specific position. /// </summary> /// <param name="index">the zero-based position to add.</param> /// <param name="header">The header to add.</param> /// <returns>The newly added header.</returns> public MimeHeaderParam AddAt(int index, MimeHeaderParam header) { if (_headers.Contains(header.Name)) { var err = new MimeException(string.Format(Messages.MimeHeaderParamCollection_Add_HeaderParamWithNameExists, header)); logger.Error(err); throw err; } if (index < 0) { var err = new MimeException(string.Format(Messages.MimeHeaderParamCollection_AddAt_InvalidPositionForMiimeHeader, index)); logger.Error(err); throw err; } if (index >= _listHeaders.Count) { return Add(header); } //Copy the last item _listHeaders.Add((MimeHeaderParam)_listHeaders[_listHeaders.Count - 1]); //Move other items if (_listHeaders.Count > 2 && index <= _listHeaders.Count - 2) { for(int i = _listHeaders.Count - 2; i >= index; i--) { _listHeaders[i + 1] = (MimeHeaderParam)_listHeaders[i]; } } //Save this item at the specific index _listHeaders[index] = header; _headers.Add(header.Name, header); return header; }