| File: IISUrlRewrite\ConditionCollection.cs | Web Access |
| Project: src\aspnetcore\src\Middleware\Rewrite\src\Microsoft.AspNetCore.Rewrite.csproj (Microsoft.AspNetCore.Rewrite) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; namespace Microsoft.AspNetCore.Rewrite.IISUrlRewrite; internal sealed class ConditionCollection : IEnumerable<Condition> { private readonly List<Condition> _conditions = new List<Condition>(); public LogicalGrouping Grouping { get; } public bool TrackAllCaptures { get; } public ConditionCollection() : this(LogicalGrouping.MatchAll, trackAllCaptures: false) { } public ConditionCollection(LogicalGrouping grouping, bool trackAllCaptures) { Grouping = grouping; TrackAllCaptures = trackAllCaptures; } public int Count => _conditions.Count; public Condition this[int index] { get { if (index < _conditions.Count) { return _conditions[index]; } throw new ArgumentOutOfRangeException(null, $"Cannot access condition at index {index}. Only {_conditions.Count} conditions were captured."); } } public void Add(Condition condition) { if (condition != null) { _conditions.Add(condition); } } public void AddConditions(IEnumerable<Condition> conditions) { if (conditions != null) { _conditions.AddRange(conditions); } } IEnumerator IEnumerable.GetEnumerator() { return _conditions.GetEnumerator(); } public IEnumerator<Condition> GetEnumerator() { return _conditions.GetEnumerator(); } }