Autofac — внедрение свойств в фильтр действий в ASP.NET Core ⇐ C#
-
Гость
Autofac — внедрение свойств в фильтр действий в ASP.NET Core
При написании приложения с использованием ASP.NET Web API 2 мне удалось добиться внедрения свойств на уровне фильтра с помощью Autofac.< /п> (пример ниже относится к неосновному веб-API ASP.NET)
builder.Register(x => new MyCustomGlobalActionFilter()) .AsWebApiApiActionFilterOverrideFor() .InstancePerRequest() .PropertiesAutowired(); Несколько вещей, о которых стоит упомянуть:
[*]мы должны зарегистрировать его для любого контроллера следующим образом: .AsWebApiActionFilterOverrideFor() [*]Для включения введения свойств используется следующий бит: .PropertiesAutowired()
Сам фильтр действий выглядит немного необычно, поскольку он тесно связан с Autofac — мы реализуем интерфейс IAutofacActionFilter.
Затем я могу разрешить службы на уровне фильтра посредством внедрения свойств, вот пример кода:
публичный класс MyCustomGlobalActionFilter: IAutofacActionFilter { публичный сеанс сеанса {get; набор; } общественный DbContextWithUserAuditing DbContext {получить; набор; } общественный ITenantService TenantService {получить; набор; } общедоступная задача OnActionExecutingAsync( HttpActionContext actionContext, Токен отменыToken ) { строка userId = ноль; инт? идентификатор арендатора = ноль; вар претензииIdentity = actionContext.RequestContext.Principal как ClaimsPrincipal; // делаем что-то вернуть Task.FromResult(0); } общедоступная задача OnActionExecutedAsync( HttpActionExecutedContext actionExecutedContext, Токен отменыToken ) { вернуть Task.FromResult(0); } } Итак, чтобы разрешить услуги как свойства, мы просто объявляем их следующим образом:
публичный сеанс сеанса { get; набор; } общественный DbContextWithUserAuditing DbContext {получить; набор; } общественный ITenantService TenantService {получить; набор; } Мой вопрос: есть ли способ разрешить службы посредством внедрения свойств в фильтр с помощью Autofac в ASP.NET Core?
При написании приложения с использованием ASP.NET Web API 2 мне удалось добиться внедрения свойств на уровне фильтра с помощью Autofac.< /п> (пример ниже относится к неосновному веб-API ASP.NET)
builder.Register(x => new MyCustomGlobalActionFilter()) .AsWebApiApiActionFilterOverrideFor() .InstancePerRequest() .PropertiesAutowired(); Несколько вещей, о которых стоит упомянуть:
[*]мы должны зарегистрировать его для любого контроллера следующим образом: .AsWebApiActionFilterOverrideFor() [*]Для включения введения свойств используется следующий бит: .PropertiesAutowired()
Сам фильтр действий выглядит немного необычно, поскольку он тесно связан с Autofac — мы реализуем интерфейс IAutofacActionFilter.
Затем я могу разрешить службы на уровне фильтра посредством внедрения свойств, вот пример кода:
публичный класс MyCustomGlobalActionFilter: IAutofacActionFilter { публичный сеанс сеанса {get; набор; } общественный DbContextWithUserAuditing DbContext {получить; набор; } общественный ITenantService TenantService {получить; набор; } общедоступная задача OnActionExecutingAsync( HttpActionContext actionContext, Токен отменыToken ) { строка userId = ноль; инт? идентификатор арендатора = ноль; вар претензииIdentity = actionContext.RequestContext.Principal как ClaimsPrincipal; // делаем что-то вернуть Task.FromResult(0); } общедоступная задача OnActionExecutedAsync( HttpActionExecutedContext actionExecutedContext, Токен отменыToken ) { вернуть Task.FromResult(0); } } Итак, чтобы разрешить услуги как свойства, мы просто объявляем их следующим образом:
публичный сеанс сеанса { get; набор; } общественный DbContextWithUserAuditing DbContext {получить; набор; } общественный ITenantService TenantService {получить; набор; } Мой вопрос: есть ли способ разрешить службы посредством внедрения свойств в фильтр с помощью Autofac в ASP.NET Core?
Мобильная версия