2
2
// The .NET Foundation licenses this file to you under the MIT license.
3
3
4
4
using System ;
5
+ using System . Diagnostics . CodeAnalysis ;
5
6
using Microsoft . Extensions . DependencyInjection ;
6
7
using Microsoft . Extensions . DependencyInjection . Extensions ;
7
8
using Microsoft . Extensions . Identity . Core ;
@@ -30,7 +31,7 @@ public IdentityBuilder(Type user, IServiceCollection services)
30
31
/// <param name="user">The <see cref="Type"/> to use for the users.</param>
31
32
/// <param name="role">The <see cref="Type"/> to use for the roles.</param>
32
33
/// <param name="services">The <see cref="IServiceCollection"/> to attach to.</param>
33
- public IdentityBuilder ( Type user , Type role , IServiceCollection services ) : this ( user , services )
34
+ public IdentityBuilder ( Type user , [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] Type role , IServiceCollection services ) : this ( user , services )
34
35
=> RoleType = role ;
35
36
36
37
/// <summary>
@@ -47,6 +48,7 @@ public IdentityBuilder(Type user, Type role, IServiceCollection services) : this
47
48
/// <value>
48
49
/// The <see cref="Type"/> used for roles.
49
50
/// </value>
51
+ [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ]
50
52
public Type ? RoleType { get ; private set ; }
51
53
52
54
/// <summary>
@@ -57,7 +59,7 @@ public IdentityBuilder(Type user, Type role, IServiceCollection services) : this
57
59
/// </value>
58
60
public IServiceCollection Services { get ; }
59
61
60
- private IdentityBuilder AddScoped ( Type serviceType , Type concreteType )
62
+ private IdentityBuilder AddScoped ( Type serviceType , [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] Type concreteType )
61
63
{
62
64
Services . AddScoped ( serviceType , concreteType ) ;
63
65
return this ;
@@ -68,23 +70,23 @@ private IdentityBuilder AddScoped(Type serviceType, Type concreteType)
68
70
/// </summary>
69
71
/// <typeparam name="TValidator">The user validator type.</typeparam>
70
72
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
71
- public virtual IdentityBuilder AddUserValidator < TValidator > ( ) where TValidator : class
73
+ public virtual IdentityBuilder AddUserValidator < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TValidator > ( ) where TValidator : class
72
74
=> AddScoped ( typeof ( IUserValidator < > ) . MakeGenericType ( UserType ) , typeof ( TValidator ) ) ;
73
75
74
76
/// <summary>
75
77
/// Adds an <see cref="IUserClaimsPrincipalFactory{TUser}"/> for the <see cref="UserType"/>.
76
78
/// </summary>
77
79
/// <typeparam name="TFactory">The type of the claims principal factory.</typeparam>
78
80
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
79
- public virtual IdentityBuilder AddClaimsPrincipalFactory < TFactory > ( ) where TFactory : class
81
+ public virtual IdentityBuilder AddClaimsPrincipalFactory < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TFactory > ( ) where TFactory : class
80
82
=> AddScoped ( typeof ( IUserClaimsPrincipalFactory < > ) . MakeGenericType ( UserType ) , typeof ( TFactory ) ) ;
81
83
82
84
/// <summary>
83
85
/// Adds an <see cref="IdentityErrorDescriber"/>.
84
86
/// </summary>
85
87
/// <typeparam name="TDescriber">The type of the error describer.</typeparam>
86
88
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
87
- public virtual IdentityBuilder AddErrorDescriber < TDescriber > ( ) where TDescriber : IdentityErrorDescriber
89
+ public virtual IdentityBuilder AddErrorDescriber < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TDescriber > ( ) where TDescriber : IdentityErrorDescriber
88
90
{
89
91
Services . AddScoped < IdentityErrorDescriber , TDescriber > ( ) ;
90
92
return this ;
@@ -95,15 +97,15 @@ public virtual IdentityBuilder AddErrorDescriber<TDescriber>() where TDescriber
95
97
/// </summary>
96
98
/// <typeparam name="TValidator">The validator type used to validate passwords.</typeparam>
97
99
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
98
- public virtual IdentityBuilder AddPasswordValidator < TValidator > ( ) where TValidator : class
100
+ public virtual IdentityBuilder AddPasswordValidator < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TValidator > ( ) where TValidator : class
99
101
=> AddScoped ( typeof ( IPasswordValidator < > ) . MakeGenericType ( UserType ) , typeof ( TValidator ) ) ;
100
102
101
103
/// <summary>
102
104
/// Adds an <see cref="IUserStore{TUser}"/> for the <see cref="UserType"/>.
103
105
/// </summary>
104
106
/// <typeparam name="TStore">The user store type.</typeparam>
105
107
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
106
- public virtual IdentityBuilder AddUserStore < TStore > ( ) where TStore : class
108
+ public virtual IdentityBuilder AddUserStore < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TStore > ( ) where TStore : class
107
109
=> AddScoped ( typeof ( IUserStore < > ) . MakeGenericType ( UserType ) , typeof ( TStore ) ) ;
108
110
109
111
/// <summary>
@@ -112,7 +114,7 @@ public virtual IdentityBuilder AddUserStore<TStore>() where TStore : class
112
114
/// <typeparam name="TProvider">The type of the token provider to add.</typeparam>
113
115
/// <param name="providerName">The name of the provider to add.</param>
114
116
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
115
- public virtual IdentityBuilder AddTokenProvider < TProvider > ( string providerName ) where TProvider : class
117
+ public virtual IdentityBuilder AddTokenProvider < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TProvider > ( string providerName ) where TProvider : class
116
118
=> AddTokenProvider ( providerName , typeof ( TProvider ) ) ;
117
119
118
120
/// <summary>
@@ -121,7 +123,7 @@ public virtual IdentityBuilder AddTokenProvider<TProvider>(string providerName)
121
123
/// <param name="providerName">The name of the provider to add.</param>
122
124
/// <param name="provider">The type of the <see cref="IUserTwoFactorTokenProvider{TUser}"/> to add.</param>
123
125
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
124
- public virtual IdentityBuilder AddTokenProvider ( string providerName , Type provider )
126
+ public virtual IdentityBuilder AddTokenProvider ( string providerName , [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] Type provider )
125
127
{
126
128
if ( ! typeof ( IUserTwoFactorTokenProvider < > ) . MakeGenericType ( UserType ) . IsAssignableFrom ( provider ) )
127
129
{
@@ -140,7 +142,7 @@ public virtual IdentityBuilder AddTokenProvider(string providerName, Type provid
140
142
/// </summary>
141
143
/// <typeparam name="TUserManager">The type of the user manager to add.</typeparam>
142
144
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
143
- public virtual IdentityBuilder AddUserManager < TUserManager > ( ) where TUserManager : class
145
+ public virtual IdentityBuilder AddUserManager < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TUserManager > ( ) where TUserManager : class
144
146
{
145
147
var userManagerType = typeof ( UserManager < > ) . MakeGenericType ( UserType ) ;
146
148
var customType = typeof ( TUserManager ) ;
@@ -160,7 +162,7 @@ public virtual IdentityBuilder AddUserManager<TUserManager>() where TUserManager
160
162
/// </summary>
161
163
/// <typeparam name="TRole">The role type.</typeparam>
162
164
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
163
- public virtual IdentityBuilder AddRoles < TRole > ( ) where TRole : class
165
+ public virtual IdentityBuilder AddRoles < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TRole > ( ) where TRole : class
164
166
{
165
167
RoleType = typeof ( TRole ) ;
166
168
AddRoleValidator < RoleValidator < TRole > > ( ) ;
@@ -174,7 +176,7 @@ public virtual IdentityBuilder AddRoles<TRole>() where TRole : class
174
176
/// </summary>
175
177
/// <typeparam name="TRole">The role validator type.</typeparam>
176
178
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
177
- public virtual IdentityBuilder AddRoleValidator < TRole > ( ) where TRole : class
179
+ public virtual IdentityBuilder AddRoleValidator < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TRole > ( ) where TRole : class
178
180
{
179
181
if ( RoleType == null )
180
182
{
@@ -189,7 +191,7 @@ public virtual IdentityBuilder AddRoleValidator<TRole>() where TRole : class
189
191
/// <typeparam name="TProtector">The personal data protector type.</typeparam>
190
192
/// <typeparam name="TKeyRing">The personal data protector key ring type.</typeparam>
191
193
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
192
- public virtual IdentityBuilder AddPersonalDataProtection < TProtector , TKeyRing > ( )
194
+ public virtual IdentityBuilder AddPersonalDataProtection < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TProtector , [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TKeyRing > ( )
193
195
where TProtector : class , ILookupProtector
194
196
where TKeyRing : class , ILookupProtectorKeyRing
195
197
{
@@ -204,7 +206,7 @@ public virtual IdentityBuilder AddPersonalDataProtection<TProtector, TKeyRing>()
204
206
/// </summary>
205
207
/// <typeparam name="TStore">The role store.</typeparam>
206
208
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
207
- public virtual IdentityBuilder AddRoleStore < TStore > ( ) where TStore : class
209
+ public virtual IdentityBuilder AddRoleStore < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TStore > ( ) where TStore : class
208
210
{
209
211
if ( RoleType == null )
210
212
{
@@ -218,7 +220,7 @@ public virtual IdentityBuilder AddRoleStore<TStore>() where TStore : class
218
220
/// </summary>
219
221
/// <typeparam name="TRoleManager">The type of the role manager to add.</typeparam>
220
222
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
221
- public virtual IdentityBuilder AddRoleManager < TRoleManager > ( ) where TRoleManager : class
223
+ public virtual IdentityBuilder AddRoleManager < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TRoleManager > ( ) where TRoleManager : class
222
224
{
223
225
if ( RoleType == null )
224
226
{
@@ -242,6 +244,6 @@ public virtual IdentityBuilder AddRoleManager<TRoleManager>() where TRoleManager
242
244
/// </summary>
243
245
/// <typeparam name="TUserConfirmation">The type of the user confirmation to add.</typeparam>
244
246
/// <returns>The current <see cref="IdentityBuilder"/> instance.</returns>
245
- public virtual IdentityBuilder AddUserConfirmation < TUserConfirmation > ( ) where TUserConfirmation : class
247
+ public virtual IdentityBuilder AddUserConfirmation < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicConstructors ) ] TUserConfirmation > ( ) where TUserConfirmation : class
246
248
=> AddScoped ( typeof ( IUserConfirmation < > ) . MakeGenericType ( UserType ) , typeof ( TUserConfirmation ) ) ;
247
249
}
0 commit comments