public Path GetParent(int backtracks) { if (backtracks > NumberOfSubPathParts) { return(null); } if (Style == PathStyle.Standard && _parts.Count == 2 && _parts[1] == string.Empty) { return(null); } if (backtracks == 0) { return(ToString()); } int partsToTake = _parts.Count - backtracks; string[] parts = new string[partsToTake + 1]; _parts.CopyTo(0, parts, 0, partsToTake); parts[partsToTake] = string.Empty; Path parent = string.Join(PartDelimiter.ToString(), parts); parent.Scheme = Scheme; parent.Host = Host; parent.Port = Port; parent.Style = Style; return(parent); }
public override string ToString() { switch (Style) { case PathStyle.Uri: if (string.IsNullOrEmpty(Scheme) && string.IsNullOrEmpty(Host)) { return(FullSubPath); } return(string.Format("{0}://{1}{2}", Scheme, Host, FullSubPath)); case PathStyle.Windows: return(string.Join(PartDelimiter.ToString(), _parts.ToArray())); case PathStyle.Standard: return(FullSubPath); default: throw new NotSupportedException(); } }