| File: ConfigurationPath.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Configuration.Abstractions\src\Microsoft.Extensions.Configuration.Abstractions.csproj (Microsoft.Extensions.Configuration.Abstractions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace Microsoft.Extensions.Configuration { /// <summary> /// Provides utility methods and constants for manipulating Configuration paths. /// </summary> public static class ConfigurationPath { /// <summary> /// The delimiter ":" used to separate individual keys in a path. /// </summary> public static readonly string KeyDelimiter = ":"; /// <summary> /// Combines path segments into one path. /// </summary> /// <param name="pathSegments">The path segments to combine.</param> /// <returns>The combined path.</returns> public static string Combine(params string[] pathSegments) { ArgumentNullException.ThrowIfNull(pathSegments); return string.Join(KeyDelimiter, pathSegments); } /// <summary> /// Combines path segments into one path. /// </summary> /// <param name="pathSegments">The path segments to combine.</param> /// <returns>The combined path.</returns> public static string Combine(IEnumerable<string> pathSegments) { ArgumentNullException.ThrowIfNull(pathSegments); return string.Join(KeyDelimiter, pathSegments); } /// <summary> /// Extracts the last path segment from the path. /// </summary> /// <param name="path">The path.</param> /// <returns>The last path segment of the path.</returns> [return: NotNullIfNotNull(nameof(path))] public static string? GetSectionKey(string? path) { if (string.IsNullOrEmpty(path)) { return path; } int lastDelimiterIndex = path.LastIndexOf(':'); return lastDelimiterIndex < 0 ? path : path.Substring(lastDelimiterIndex + 1); } /// <summary> /// Extracts the path corresponding to the parent node for a given path. /// </summary> /// <param name="path">The path.</param> /// <returns>The original path minus the last individual segment found in it. Null if the original path corresponds to a top level node.</returns> public static string? GetParentPath(string? path) { if (string.IsNullOrEmpty(path)) { return null; } int lastDelimiterIndex = path.LastIndexOf(':'); return lastDelimiterIndex < 0 ? null : path.Substring(0, lastDelimiterIndex); } } }