| File: Settings\SettingSection.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Configuration\NuGet.Configuration.csproj (NuGet.Configuration) |
// Copyright(c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace NuGet.Configuration { public abstract class SettingSection : SettingsGroup<SettingItem> { public IReadOnlyCollection<SettingItem> Items => Children.ToList(); public T? GetFirstItemWithAttribute<T>(string attributeName, string expectedAttributeValue) where T : SettingItem { return Items.OfType<T>().FirstOrDefault(c => c.Attributes.TryGetValue(attributeName, out var attributeValue) && string.Equals(attributeValue, expectedAttributeValue, StringComparison.OrdinalIgnoreCase)); } protected SettingSection(string name, IReadOnlyDictionary<string, string>? attributes, IEnumerable<SettingItem>? children) : base(name, attributes, children) { } internal SettingSection(string name, XElement element, SettingsFile origin) : base(name, element, origin) { } internal bool Update(SettingItem item) { if (item == null || (Origin != null && Origin.IsReadOnly)) { return false; } if (TryGetChild(item, out var currentChild)) { if (currentChild.Origin != null && currentChild.Origin.IsReadOnly) { return false; } currentChild.Update(item); return true; } return false; } public override bool Equals(object? other) { var section = other as SettingSection; if (section == null) { return false; } if (ReferenceEquals(this, section)) { return true; } return string.Equals(ElementName, section.ElementName, StringComparison.Ordinal); } public override int GetHashCode() => ElementName.GetHashCode(); } }