Skip to content

Commit 8b3637e

Browse files
committed
GetTokenProviderFromBaseType使用缓存
1 parent 9e69ecb commit 8b3637e

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

WebApiClientCore.Extensions.OAuths/TokenProviderFactory.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using Microsoft.Extensions.Options;
33
using System;
4+
using System.Collections.Concurrent;
45

56
namespace WebApiClientCore.Extensions.OAuths
67
{
@@ -11,6 +12,7 @@ sealed class TokenProviderFactory : ITokenProviderFactory
1112
{
1213
private readonly IServiceProvider serviceProvider;
1314
private readonly TokenProviderFactoryOptions options;
15+
private readonly ConcurrentDictionary<Type, ITokenProvider> tokenProviderCache = new ConcurrentDictionary<Type, ITokenProvider>();
1416

1517
/// <summary>
1618
/// 默认的token提供者工厂
@@ -46,7 +48,7 @@ public ITokenProvider Create(Type httpApiType, TypeMatchMode typeMatchMode)
4648

4749
if (typeMatchMode == TypeMatchMode.TypeOrBaseTypes)
4850
{
49-
return this.GetTokenProviderFromBaseType(httpApiType);
51+
return this.tokenProviderCache.GetOrAdd(httpApiType, GetTokenProviderFromBaseType);
5052
}
5153

5254
throw new InvalidOperationException($"尚未注册{httpApiType}的token提供者");

WebApiClientCore/Parameters/JsonPatchDocument~.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public PathVisitor(LambdaExpression pathSelector, Func<MemberInfo, string> nameF
137137
/// <returns></returns>
138138
protected override Expression VisitMember(MemberExpression node)
139139
{
140-
var name = staticNameCache.GetOrAdd(node.Member, m => this.nameFunc(m));
140+
var name = staticNameCache.GetOrAdd(node.Member, this.nameFunc);
141141
this.path.Insert(0, $"/{name}");
142142
return base.VisitMember(node);
143143
}

0 commit comments

Comments
 (0)