File: NamedValidateOptionsFilter.cs
Web Access
Project: src\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;
 
namespace Microsoft.Extensions.Options
{
    internal sealed class NamedValidateOptionsFilter<TOptions, TInner> : IValidateOptions<TOptions>
        where TOptions : class
        where TInner : IValidateOptions<TOptions>
    {
        private readonly string _name;
        private readonly TInner _inner;
 
        internal NamedValidateOptionsFilter(string name, TInner inner)
        {
            ArgumentNullException.ThrowIfNull(inner);
 
            _name = name;
            _inner = inner;
        }
 
        public ValidateOptionsResult Validate(string? name, TOptions options)
        {
            if (name is null || name == _name)
            {
                return _inner.Validate(name, options);
            }
 
            // ignored if not validating this instance
            return ValidateOptionsResult.Skip;
        }
    }
}