| File: TokenProviderDescriptor.cs | Web Access |
| Project: src\aspnetcore\src\Identity\Extensions.Core\src\Microsoft.Extensions.Identity.Core.csproj (Microsoft.Extensions.Identity.Core) |
// 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.Collections.Generic; namespace Microsoft.AspNetCore.Identity; /// <summary> /// Used to represents a token provider in <see cref="TokenOptions"/>'s TokenMap. /// </summary> public class TokenProviderDescriptor { // Provides support for multiple TUser types at once. // See MapIdentityApiTests.CanAddEndpointsToMultipleRouteGroupsForMultipleUsersTypes for example usage. private readonly Stack<Type> _providerTypes = new(1); /// <summary> /// Initializes a new instance of the <see cref="TokenProviderDescriptor"/> class. /// </summary> /// <param name="type">The concrete type for this token provider.</param> public TokenProviderDescriptor(Type type) { _providerTypes.Push(type); } /// <summary> /// The type that will be used for this token provider. /// </summary> public Type ProviderType => _providerTypes.Peek(); /// <summary> /// If specified, the instance to be used for the token provider. /// </summary> public object? ProviderInstance { get; set; } internal void AddProviderType(Type type) => _providerTypes.Push(type); internal Type? GetProviderType<T>() { foreach (var providerType in _providerTypes) { if (typeof(T).IsAssignableFrom(providerType)) { return providerType; } } return null; } }