Skip to content

Commit a0d89ce

Browse files
committed
增加Aot兼容性适配
1 parent 58e4edf commit a0d89ce

File tree

55 files changed

+506
-123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+506
-123
lines changed

WebApiClientCore.Abstractions/ApiActionDescriptor.cs

+4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
4+
using System.Diagnostics.CodeAnalysis;
45
using System.Reflection;
56

67
namespace WebApiClientCore
@@ -14,6 +15,9 @@ public abstract class ApiActionDescriptor
1415
/// 获取所在接口类型
1516
/// 这个值不一定是声明方法的接口类型
1617
/// </summary>
18+
#if NET5_0_OR_GREATER
19+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
20+
#endif
1721
public abstract Type InterfaceType { get; protected set; }
1822

1923
/// <summary>

WebApiClientCore.Abstractions/IApiActionDescriptorProvider.cs

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Diagnostics.CodeAnalysis;
23
using System.Reflection;
34

45
namespace WebApiClientCore
@@ -13,6 +14,10 @@ public interface IApiActionDescriptorProvider
1314
/// </summary>
1415
/// <param name="method">接口的方法</param>
1516
/// <param name="interfaceType">接口类型</param>
16-
ApiActionDescriptor CreateActionDescriptor(MethodInfo method, Type interfaceType);
17+
ApiActionDescriptor CreateActionDescriptor(MethodInfo method,
18+
#if NET5_0_OR_GREATER
19+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
20+
#endif
21+
Type interfaceType);
1722
}
1823
}

WebApiClientCore.Abstractions/IHttpApiActivator.cs

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
namespace WebApiClientCore
1+
using System.Diagnostics.CodeAnalysis;
2+
3+
namespace WebApiClientCore
24
{
35
/// <summary>
46
/// 定义THttpApi的实例创建器的接口
57
/// </summary>
68
/// <typeparam name="THttpApi"></typeparam>
79
public interface IHttpApiActivator<
810
#if NET5_0_OR_GREATER
9-
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
11+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
1012
#endif
1113
THttpApi>
1214
{

WebApiClientCore.Abstractions/Serialization/KeyValueSerializerOptions.cs

+10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Diagnostics;
4+
using System.Diagnostics.CodeAnalysis;
45
using System.Text.Encodings.Web;
56
using System.Text.Json;
67
using System.Text.Json.Serialization;
@@ -40,8 +41,13 @@ public JsonNamingPolicy? DictionaryKeyPolicy
4041
/// </summary>
4142
public bool IgnoreNullValues
4243
{
44+
#if NET5_0_OR_GREATER
45+
get => jsonOptions.DefaultIgnoreCondition == JsonIgnoreCondition.WhenWritingNull;
46+
set => jsonOptions.DefaultIgnoreCondition = value ? JsonIgnoreCondition.WhenWritingNull : JsonIgnoreCondition.Never;
47+
#else
4348
get => jsonOptions.IgnoreNullValues;
4449
set => jsonOptions.IgnoreNullValues = value;
50+
#endif
4551
}
4652

4753
/// <summary>
@@ -90,6 +96,10 @@ public KeyValueSerializerOptions()
9096
/// </summary>
9197
/// <param name="typeToConvert">目标类型</param>
9298
/// <returns></returns>
99+
#if NET8_0_OR_GREATER
100+
[RequiresDynamicCode("Getting a converter for a type may require reflection which depends on runtime code generation.")]
101+
[RequiresUnreferencedCode("Getting a converter for a type may require reflection which depends on unreferenced code.")]
102+
#endif
93103
public JsonConverter GetConverter(Type typeToConvert)
94104
{
95105
return this.jsonOptions.GetConverter(typeToConvert);

WebApiClientCore.Abstractions/WebApiClientCore.Abstractions.csproj

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<Nullable>enable</Nullable>
4+
<Nullable>enable</Nullable>
55
<TargetFrameworks>netstandard2.1;net5.0;net8.0</TargetFrameworks>
6+
<IsAotCompatible Condition="'$(TargetFramework)' == 'net8.0'">true</IsAotCompatible>
67

78
<RootNamespace>WebApiClientCore</RootNamespace>
89
<AssemblyName>WebApiClientCore.Abstractions</AssemblyName>

WebApiClientCore.Extensions.OAuths/DependencyInjection/TokenHandlerExtensions.cs

+4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Diagnostics.CodeAnalysis;
23
using WebApiClientCore.Extensions.OAuths;
34
using WebApiClientCore.Extensions.OAuths.HttpMessageHandlers;
45

@@ -38,6 +39,9 @@ public static IHttpClientBuilder AddOAuthTokenHandler(this IHttpClientBuilder bu
3839
/// <param name="handlerFactory">hanlder的创建委托</param>
3940
/// <param name="tokenProviderSearchMode">token提供者的查找模式</param>
4041
/// <returns></returns>
42+
#if NET5_0_OR_GREATER
43+
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2072", Justification = "类型httpApiType明确是不会被裁剪的")]
44+
#endif
4145
public static IHttpClientBuilder AddOAuthTokenHandler<TOAuthTokenHandler>(this IHttpClientBuilder builder, Func<IServiceProvider, ITokenProvider, TOAuthTokenHandler> handlerFactory, TypeMatchMode tokenProviderSearchMode = TypeMatchMode.TypeOrBaseTypes)
4246
where TOAuthTokenHandler : OAuthTokenHandler
4347
{

WebApiClientCore.Extensions.OAuths/DependencyInjection/TokenProviderExtensions.GrantTypeClient.cs

+16-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.Options;
22
using System;
3+
using System.Diagnostics.CodeAnalysis;
34
using WebApiClientCore.Extensions.OAuths.TokenProviders;
45

56
namespace Microsoft.Extensions.DependencyInjection
@@ -16,7 +17,11 @@ public static partial class TokenProviderExtensions
1617
/// <param name="services"></param>
1718
/// <param name="alias">TokenProvider的别名</param>
1819
/// <returns></returns>
19-
public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsTokenProvider<THttpApi>(this IServiceCollection services, string alias = "")
20+
public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsTokenProvider<
21+
#if NET5_0_OR_GREATER
22+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
23+
#endif
24+
THttpApi>(this IServiceCollection services, string alias = "")
2025
{
2126
var builder = services.AddTokenProvider<THttpApi, ClientCredentialsTokenProvider>(alias);
2227
return new OptionsBuilder<ClientCredentialsOptions>(builder.Services, builder.Name);
@@ -29,7 +34,11 @@ public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsToken
2934
/// <param name="services"></param>
3035
/// <param name="configureOptions">配置</param>
3136
/// <returns></returns>
32-
public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsTokenProvider<THttpApi>(this IServiceCollection services, Action<ClientCredentialsOptions> configureOptions)
37+
public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsTokenProvider<
38+
#if NET5_0_OR_GREATER
39+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
40+
#endif
41+
THttpApi>(this IServiceCollection services, Action<ClientCredentialsOptions> configureOptions)
3342
{
3443
return services.AddClientCredentialsTokenProvider<THttpApi>().Configure(configureOptions);
3544
}
@@ -42,7 +51,11 @@ public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsToken
4251
/// <param name="alias">TokenProvider的别名</param>
4352
/// <param name="configureOptions">配置</param>
4453
/// <returns></returns>
45-
public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsTokenProvider<THttpApi>(this IServiceCollection services, string alias, Action<ClientCredentialsOptions> configureOptions)
54+
public static OptionsBuilder<ClientCredentialsOptions> AddClientCredentialsTokenProvider<
55+
#if NET5_0_OR_GREATER
56+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
57+
#endif
58+
THttpApi>(this IServiceCollection services, string alias, Action<ClientCredentialsOptions> configureOptions)
4659
{
4760
return services.AddClientCredentialsTokenProvider<THttpApi>(alias).Configure(configureOptions);
4861
}

WebApiClientCore.Extensions.OAuths/DependencyInjection/TokenProviderExtensions.GrantTypePassword.cs

+16-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.Options;
22
using System;
3+
using System.Diagnostics.CodeAnalysis;
34
using WebApiClientCore.Extensions.OAuths.TokenProviders;
45

56
namespace Microsoft.Extensions.DependencyInjection
@@ -16,7 +17,11 @@ public static partial class TokenProviderExtensions
1617
/// <param name="services"></param>
1718
/// <param name="alias">TokenProvider的别名</param>
1819
/// <returns></returns>
19-
public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsTokenProvider<THttpApi>(this IServiceCollection services, string alias = "")
20+
public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsTokenProvider<
21+
#if NET5_0_OR_GREATER
22+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
23+
#endif
24+
THttpApi>(this IServiceCollection services, string alias = "")
2025
{
2126
var builder = services.AddTokenProvider<THttpApi, PasswordCredentialsTokenProvider>(alias);
2227
return new OptionsBuilder<PasswordCredentialsOptions>(builder.Services, builder.Name);
@@ -29,7 +34,11 @@ public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsT
2934
/// <param name="services"></param>
3035
/// <param name="configureOptions">配置</param>
3136
/// <returns></returns>
32-
public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsTokenProvider<THttpApi>(this IServiceCollection services, Action<PasswordCredentialsOptions> configureOptions)
37+
public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsTokenProvider<
38+
#if NET5_0_OR_GREATER
39+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
40+
#endif
41+
THttpApi>(this IServiceCollection services, Action<PasswordCredentialsOptions> configureOptions)
3342
{
3443
return services.AddPasswordCredentialsTokenProvider<THttpApi>().Configure(configureOptions);
3544
}
@@ -42,7 +51,11 @@ public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsT
4251
/// <param name="alias">TokenProvider的别名</param>
4352
/// <param name="configureOptions">配置</param>
4453
/// <returns></returns>
45-
public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsTokenProvider<THttpApi>(this IServiceCollection services, string alias, Action<PasswordCredentialsOptions> configureOptions)
54+
public static OptionsBuilder<PasswordCredentialsOptions> AddPasswordCredentialsTokenProvider<
55+
#if NET5_0_OR_GREATER
56+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
57+
#endif
58+
THttpApi>(this IServiceCollection services, string alias, Action<PasswordCredentialsOptions> configureOptions)
4659
{
4760
return services.AddPasswordCredentialsTokenProvider<THttpApi>(alias).Configure(configureOptions);
4861
}

WebApiClientCore.Extensions.OAuths/DependencyInjection/TokenProviderExtensions.cs

+19-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.DependencyInjection.Extensions;
22
using System;
3+
using System.Diagnostics.CodeAnalysis;
34
using System.Threading.Tasks;
45
using WebApiClientCore;
56
using WebApiClientCore.Extensions.OAuths;
@@ -20,7 +21,11 @@ public static partial class TokenProviderExtensions
2021
/// <param name="tokenRequest">token请求委托</param>
2122
/// <param name="alias">TokenProvider的别名</param>
2223
/// <returns></returns>
23-
public static ITokenProviderBuilder AddTokenProvider<THttpApi>(this IServiceCollection services, Func<IServiceProvider, Task<TokenResult?>> tokenRequest, string alias = "")
24+
public static ITokenProviderBuilder AddTokenProvider<
25+
#if NET5_0_OR_GREATER
26+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
27+
#endif
28+
THttpApi>(this IServiceCollection services, Func<IServiceProvider, Task<TokenResult?>> tokenRequest, string alias = "")
2429
{
2530
return services.AddTokenProvider<THttpApi, DelegateTokenProvider>(s => new DelegateTokenProvider(s, tokenRequest), alias);
2631
}
@@ -36,11 +41,11 @@ public static ITokenProviderBuilder AddTokenProvider<THttpApi>(this IServiceColl
3641
/// <returns></returns>
3742
public static ITokenProviderBuilder AddTokenProvider<
3843
#if NET5_0_OR_GREATER
39-
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
44+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
4045
#endif
4146
THttpApi,
4247
#if NET5_0_OR_GREATER
43-
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
48+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
4449
#endif
4550
TTokenProvider>(this IServiceCollection services, Func<IServiceProvider, TTokenProvider> tokenProviderFactory, string alias = "")
4651
where TTokenProvider : class, ITokenProvider
@@ -62,11 +67,11 @@ public static ITokenProviderBuilder AddTokenProvider<
6267
/// <returns></returns>
6368
public static ITokenProviderBuilder AddTokenProvider<
6469
#if NET5_0_OR_GREATER
65-
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
70+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
6671
#endif
6772
THttpApi,
6873
#if NET5_0_OR_GREATER
69-
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors)]
74+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
7075
#endif
7176
TTokenProvider>(this IServiceCollection services, string alias = "")
7277
where TTokenProvider : class, ITokenProvider
@@ -86,7 +91,15 @@ public static ITokenProviderBuilder AddTokenProvider<
8691
/// <param name="services"></param>
8792
/// <param name="alias">TokenProvider的别名</param>
8893
/// <returns></returns>
89-
private static ITokenProviderBuilder AddTokenProviderCore<THttpApi, TTokenProvider>(this IServiceCollection services, string alias)
94+
private static ITokenProviderBuilder AddTokenProviderCore<
95+
#if NET5_0_OR_GREATER
96+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
97+
#endif
98+
THttpApi,
99+
#if NET5_0_OR_GREATER
100+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)]
101+
#endif
102+
TTokenProvider>(this IServiceCollection services, string alias)
90103
where TTokenProvider : class, ITokenProvider
91104
{
92105
if (alias == null)

WebApiClientCore.Extensions.OAuths/ITokenProviderFactory.cs

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace WebApiClientCore.Extensions.OAuths
45
{
@@ -14,7 +15,11 @@ public interface ITokenProviderFactory
1415
/// <param name="typeMatchMode">类型匹配模式</param>
1516
/// <returns></returns>
1617
/// <exception cref="InvalidOperationException"></exception>
17-
ITokenProvider Create(Type httpApiType, TypeMatchMode typeMatchMode = TypeMatchMode.TypeOnly);
18+
ITokenProvider Create(
19+
#if NET5_0_OR_GREATER
20+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
21+
#endif
22+
Type httpApiType, TypeMatchMode typeMatchMode = TypeMatchMode.TypeOnly);
1823

1924
/// <summary>
2025
/// 通过接口类型获取或创建其对应的token提供者
@@ -24,6 +29,10 @@ public interface ITokenProviderFactory
2429
/// <param name="alias">TokenProvider的别名</param>
2530
/// <returns></returns>
2631
/// <exception cref="InvalidOperationException"></exception>
27-
ITokenProvider Create(Type httpApiType, TypeMatchMode typeMatchMode, string alias);
32+
ITokenProvider Create(
33+
#if NET5_0_OR_GREATER
34+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
35+
#endif
36+
Type httpApiType, TypeMatchMode typeMatchMode, string alias);
2837
}
2938
}

WebApiClientCore.Extensions.OAuths/TokenProviderFactory.cs

+24-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Microsoft.Extensions.Options;
33
using System;
44
using System.Collections.Concurrent;
5+
using System.Diagnostics.CodeAnalysis;
56

67
namespace WebApiClientCore.Extensions.OAuths
78
{
@@ -33,7 +34,11 @@ public TokenProviderFactory(IServiceProvider serviceProvider, IOptions<TokenProv
3334
/// <returns></returns>
3435
/// <exception cref="ArgumentNullException"></exception>
3536
/// <exception cref="InvalidOperationException"></exception>
36-
public ITokenProvider Create(Type httpApiType, TypeMatchMode typeMatchMode)
37+
public ITokenProvider Create(
38+
#if NET5_0_OR_GREATER
39+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
40+
#endif
41+
Type httpApiType, TypeMatchMode typeMatchMode)
3742
{
3843
return this.Create(httpApiType, typeMatchMode, alias: string.Empty);
3944
}
@@ -46,7 +51,11 @@ public ITokenProvider Create(Type httpApiType, TypeMatchMode typeMatchMode)
4651
/// <param name="alias">TokenProvider的别名</param>
4752
/// <returns></returns>
4853
/// <exception cref="InvalidOperationException"></exception>
49-
public ITokenProvider Create(Type httpApiType, TypeMatchMode typeMatchMode, string alias)
54+
public ITokenProvider Create(
55+
#if NET5_0_OR_GREATER
56+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
57+
#endif
58+
Type httpApiType, TypeMatchMode typeMatchMode, string alias)
5059
{
5160
if (httpApiType == null)
5261
{
@@ -101,7 +110,11 @@ private ITokenProvider CreateTokenProvider(ServiceKey serviceKey)
101110
/// <param name="alias">别名</param>
102111
/// <exception cref="InvalidOperationException"></exception>
103112
/// <returns></returns>
104-
private ITokenProvider? CreateTokenProviderFromBaseType(Type httpApiType, string alias)
113+
private ITokenProvider? CreateTokenProviderFromBaseType(
114+
#if NET5_0_OR_GREATER
115+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
116+
#endif
117+
Type httpApiType, string alias)
105118
{
106119
foreach (var baseType in httpApiType.GetInterfaces())
107120
{
@@ -122,13 +135,20 @@ private sealed class ServiceKey : IEquatable<ServiceKey>
122135
{
123136
private int? hashCode;
124137

138+
#if NET5_0_OR_GREATER
139+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
140+
#endif
125141
public Type HttpApiType { get; }
126142

127143
public TypeMatchMode TypeMatchMode { get; }
128144

129145
public string Alias { get; }
130146

131-
public ServiceKey(Type httpApiType, TypeMatchMode typeMatchMode, string alias)
147+
public ServiceKey(
148+
#if NET5_0_OR_GREATER
149+
[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)]
150+
#endif
151+
Type httpApiType, TypeMatchMode typeMatchMode, string alias)
132152
{
133153
this.HttpApiType = httpApiType;
134154
this.TypeMatchMode = typeMatchMode;

WebApiClientCore.Extensions.OAuths/TokenProviders/ClientCredentialsTokenProvider.cs

+9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using System;
3+
using System.Diagnostics.CodeAnalysis;
34
using System.Threading.Tasks;
45
using WebApiClientCore.Extensions.OAuths.Exceptions;
56

@@ -24,6 +25,10 @@ public ClientCredentialsTokenProvider(IServiceProvider services)
2425
/// </summary>
2526
/// <param name="serviceProvider"></param>
2627
/// <returns></returns>
28+
#if NET5_0_OR_GREATER
29+
[UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
30+
[UnconditionalSuppressMessage("Trimming", "IL3050:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
31+
#endif
2732
protected override Task<TokenResult?> RequestTokenAsync(IServiceProvider serviceProvider)
2833
{
2934
var options = this.GetOptionsValue<ClientCredentialsOptions>();
@@ -42,6 +47,10 @@ public ClientCredentialsTokenProvider(IServiceProvider services)
4247
/// <param name="serviceProvider"></param>
4348
/// <param name="refresh_token"></param>
4449
/// <returns></returns>
50+
#if NET5_0_OR_GREATER
51+
[UnconditionalSuppressMessage("Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
52+
[UnconditionalSuppressMessage("Trimming", "IL3050:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "<Pending>")]
53+
#endif
4554
protected override Task<TokenResult?> RefreshTokenAsync(IServiceProvider serviceProvider, string refresh_token)
4655
{
4756
var options = this.GetOptionsValue<ClientCredentialsOptions>();

0 commit comments

Comments
 (0)