System.UriExtensions.Combine C# (CSharp) Méthode

Combine() public static méthode

Combines two Uris altogether, without checking if the base one is an absolute uri.
public static Combine ( this uri, Uri baseUri ) : Uri
uri this Relative uri to be appended.
baseUri Uri Base uri.
Résultat Uri
        public static Uri Combine(this Uri uri, Uri baseUri)
        {
            if (uri == null)
            {
                throw new ArgumentNullException("uri");
            }

            if (baseUri == null)
            {
                throw new ArgumentNullException("baseUri");
            }

            if (baseUri.IsAbsoluteUri)
            {
                Uri relativeUri = uri;
                if (relativeUri.ToString().StartsWith("/"))
                {
                    if (!baseUri.ToString().EndsWith("/"))
                    {
                        baseUri = new Uri(baseUri.ToString() + "/");
                    }

                    relativeUri = new Uri(relativeUri.ToString().Substring(1), UriKind.Relative);
                }

                return new Uri(baseUri, relativeUri);
            }

            string uriString = uri.ToString();
            if (uriString == "/")
            {
                return baseUri;
            }

            string baseUriString = VirtualPathUtility.AppendTrailingSlash(baseUri.ToString());
            string result = VirtualPathUtility.Combine(
                (baseUriString[0] == '/' ? String.Empty : "/") + baseUriString,
                (uriString[0] == '/' ? uriString.Substring(1) : uriString));
            return new Uri(result, UriKind.Relative);
        }