// The .NET Foundation licenses this file to you under the MIT license.
using System;
+using System.Diagnostics;
using System.Threading;
using Microsoft.Extensions.Internal;
/// <summary>
/// A <see cref="IChangeToken"/> implementation using <see cref="CancellationToken"/>.
/// </summary>
+ [DebuggerDisplay("HasChanged = {HasChanged}")]
public class CancellationChangeToken : IChangeToken
{
/// <summary>
/// <summary>
/// An <see cref="IChangeToken"/> which represents one or more <see cref="IChangeToken"/> instances.
/// </summary>
+ [DebuggerDisplay("HasChanged = {HasChanged}")]
public class CompositeChangeToken : IChangeToken
{
private static readonly Action<object?> _onChangeDelegate = OnChange;
/// <summary>
/// An optimized representation of a substring.
/// </summary>
+ [DebuggerDisplay("{Value}")]
public readonly struct StringSegment : IEquatable<StringSegment>, IEquatable<string?>
{
/// <summary>
/// <summary>
/// Represents zero/null, one, or many strings in an efficient way.
/// </summary>
+ [DebuggerDisplay("{ToString()}")]
+ [DebuggerTypeProxy(typeof(StringValuesDebugView))]
public readonly struct StringValues : IList<string?>, IReadOnlyList<string?>, IEquatable<StringValues>, IEquatable<string?>, IEquatable<string?[]?>
{
/// <summary>
{
}
}
+
+ private sealed class StringValuesDebugView(StringValues values)
+ {
+ [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+ public string?[] Items => values.ToArray();
+ }
}
}