У меня есть поле userid
в токене и пользовательский IWebContext
вместо того, чтобы просто создавать внутри него типичный CurrentUser
(который выполняет внутри него типичные вещи get-user-by-id), которые я хотел бы иметьчто-то вроде CurrentUserAsRole<Admin>
, которое попытается получить Admin
экземпляр userId
, если текущий пользователь имеет эту роль, в противном случае вернет null
.
Я уже пытался создать универсальный метод расширения для WebContextно застрял с переключателем в разновидностях T
(where T: User
), например, (Type.GetTypeCode(typeof(T)) == Admin)
, а также возвращает экземпляр Admin
, несмотря на тот факт, что Admin
непосредственно вложено из User
public T GetCurrentUserAsRole<T>(int currentUserId) where T: User
{
switch (Type.GetTypeCode(typeof(T)))
{
// `Admin` is a type which is not walid in the current context
case Admin:
//cannot return Admin as T
return (T)_adminService.GetByUserId(currentUserId);
}
}
Есть ли шанс использовать _context.GetCurrentUserAsRole (int userId)