Как динамически устанавливать дополнительные свойства в моделях с несколькими запросами в ASP.NET Core Web ApiC#

Место общения программистов C#
Ответить
Гость
 Как динамически устанавливать дополнительные свойства в моделях с несколькими запросами в ASP.NET Core Web Api

Сообщение Гость »

На моем рабочем месте мне было поручено провести рефакторинг некоторого кода в приложении ASP.NET Core Web API. В приложении у меня есть несколько моделей запросов, некоторые из которых включают такие свойства, как UserId, ChartId или оба. Например, модель AcceptEvent включает все эти свойства, тогда как другие модели могут включать только ChartId.
Я создал класс обслуживания для получения утверждений пользователей:

Код: Выделить всё

public class UserClaimsService : IUserClaimsService
{
public long ProvinceId { get; }
public long UserId { get; }
public long LoginChart { get; }

public UserClaimsService(IHttpContextAccessor httpContextAccessor)
{
ClaimsPrincipal? user = httpContextAccessor.HttpContext.User;
if (user.Identity.IsAuthenticated && user != null)
{
UserId = long.Parse(user.Claims.First(a => a.Type == ClaimTypes.NameIdentifier).Value);
ProvinceId = long.Parse(user.Claims.First(a => a.Type == "ProvinceId").Value);
LoginChart = long.Parse(user.Claims.First(a => a.Type == "ChartId").Value);
}
}
}

public interface IUserClaimsService
{
public long ProvinceId { get; }
public long UserId { get;  }
public long LoginChart { get; }
}
Эта служба зарегистрирована в AddScoped. Однако я не уверен, как последовательно динамически устанавливать эти необязательные свойства (например, RegionId, LoginChart) в моделях запросов.
Является ли использование глобального фильтра хорошим подходом для динамической установки этих свойств в запросить модели? Как я могу этого добиться и есть ли какие-либо соображения по производительности или рекомендации, о которых мне следует знать?

Подробнее здесь: https://stackoverflow.com/questions/787 ... in-asp-net
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»