/// <summary> /// Appends a query parameter. If value is a collection type (array, IEnumerable, etc.), multiple parameters are added, i.e. x=1&x=2. /// To overwrite existing parameters of the same name, use AddOrReplace instead. /// </summary> /// <param name="name">Name of the parameter.</param> /// <param name="value">Value of the parameter. If it's a collection, multiple parameters of the same name are added.</param> /// <param name="isEncoded">If true, assume value(s) already URL-encoded.</param> /// <param name="nullValueHandling">Describes how to handle null values.</param> public void Add(string name, object value, bool isEncoded = false, NullValueHandling nullValueHandling = NullValueHandling.Remove) { if (value == null && nullValueHandling == NullValueHandling.Remove) { _values.Remove(name); return; } foreach (var val in SplitCollection(value)) { if (val == null && nullValueHandling != NullValueHandling.NameOnly) { continue; } _values.Add(name, new QueryParamValue(val, isEncoded)); } }