Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
            }
        }