| File: NamedAsyncValidateOptionsFilter.cs | Web Access |
| Project: src\runtime\src\libraries\Microsoft.Extensions.Options\src\Microsoft.Extensions.Options.csproj (Microsoft.Extensions.Options) |
// 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.Threading; using System.Threading.Tasks; namespace Microsoft.Extensions.Options { internal interface IOptionsValidatorNameMetadata { string? Name { get; } } internal sealed class NamedAsyncValidateOptionsFilter<TOptions> : IAsyncValidateOptions<TOptions>, IOptionsValidatorNameMetadata where TOptions : class { private readonly string _name; private readonly IAsyncValidateOptions<TOptions> _inner; internal NamedAsyncValidateOptionsFilter(string name, IAsyncValidateOptions<TOptions> inner) { ArgumentNullException.ThrowIfNull(inner); _name = name; _inner = inner; } string? IOptionsValidatorNameMetadata.Name => _name; public ValidateOptionsResult Validate(string? name, TOptions options) => name is null || name == _name ? _inner.Validate(name, options) : ValidateOptionsResult.Skip; public Task<ValidateOptionsResult> ValidateAsync( string? name, TOptions options, CancellationToken cancellationToken = default) => name is null || name == _name ? _inner.ValidateAsync(name, options, cancellationToken) : Task.FromResult(ValidateOptionsResult.Skip); } }