В настоящее время я внедряю некоторые сервисы, основанные на дизайне UserManger Asp.Net Core Identity. В реализации мне было интересно, как usermanager может поддерживать отмену, если нет возможности передать токен отмены в методы UserManager.
Я также увидел, что внутри usermanager есть свойство токена отмены (Со значением по умолчанию), который используется им внутри и будет передан используемым асинхронным методам. Но это свойство недоступно из-за его уровня защиты
protected virtual CancellationToken CancellationToken => CancellationToken.None;
Как я могу передать свой токен отмены, который я использую в моем контроллере, например, в диспетчер пользователей? Должен ли я его перегрузить и передать в него через новый метод?
public class MyUserManager : UserManager<MyUser>
{
/* ... Other stuff... */
protected override CancellationToken CancellationToken {get;set;}
public void SetCancellationToken(CancellationToken cancellationToken)
{
this.CancellationToken = cancellationToken;
}
}
Это правильный путь для отмены с помощью userManager? В случае «да»: почему это отличается от других компонентов, в которых используются cancellationToken, например EF Core, где вы должны передать CancellationToken через параметр метода?