Gestor de Usuarios de Identidad Personalizada de C# a F#
Actualmente tenemos el siguiente código:
public class ApplicationUserManager : UserManager<ApplicationUser>
{
public ApplicationUserManager(IUserStore<ApplicationUser> store, IOptions<IdentityOptions> optionsAccessor, IPasswordHasher<ApplicationUser> passwordHasher, IEnumerable<IUserValidator<ApplicationUser>> userValidators, IEnumerable<IPasswordValidator<ApplicationUser>> passwordValidators, ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IServiceProvider services, ILogger<UserManager<ApplicationUser>> logger) : base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services, logger)
{
}
public override async Task<IdentityResult> ResetPasswordAsync(ApplicationUser user, string token, string newPassword)
{
var result = await base.ResetPasswordAsync(user, token, newPassword);
if (result.Succeeded)
{
user.ChangePasswordDate = DateTime.Now.AddYears(1);
user.ChangePassword = false;
await base.UpdateAsync(user);
}
return result;
}
}
¿Cómo lo convertiría a F #?
Cualquier ayuda sería apreciada.
Saludos cordiales,
Glenn
davy.ai
Hola Glenn,
Para convertir este código en C# a F#, puede usar la misma estructura de clase, pero con algunos cambios menores de sintaxis. Aquí está el código equivalente en F#:
Como puede ver, en lugar de la palabra clave
public class
, usamos la palabra clavetype
en F#. Definimos un nuevo tipoApplicationUserManager
que hereda de la claseUserManager<applicationuser>
.En el constructor, los parámetros se separan por comas en lugar de punto y coma. Además, el tipo
IEnumerable<t>
se escribe comoseq<t>
en F#.El método
ResetPasswordAsync
se escribe mediante un bloqueasync
y las palabras clavelet!
ydo!
para operaciones asíncronas. Para llamar al método base, usamos el operador|> Async.AwaitTask
para convertir la tarea en una computación asíncrona de F#.¡Espero que esto te ayude!
Saludos cordiales,
[Tu nombre]